oracle中的字符比较
来源:互联网 发布:类似于酷家乐的软件 编辑:程序博客网 时间:2024/04/30 04:57
在ORACLE中,当两个字符进行比较的时候,可以使用两种比较语义:填充空格式(blank-padded)或者非填充空格式(non-blank-padded)
1.填充空格式
1)如果string1和string2是不同长度的,那么首先在较短的字符串上填充空格使得它们的长度相同.
2)逐个字符地比较每个字符串,从字符串左边开始.假设string1中的字符时char1,string2的字符是char2.
3)如果ASCII(char1)<ASCII(char2),那么string1<string2.
如果ASCII(char1)>ASCII(char2),那么string1>string2.
如果ASCII(char1)=ASCII(char2),那么继续比较sting1和string2中的下一个字符.
4)如果到达了string1和string2的末尾,那么两个字符串是相同的.
使用填充空格式比较语义,那么下面的条件将都返回为TRUE
'abc'='abc'
'abc '='abc' --注意到等号左边的字符串结尾包含空格
'ab'<'abc'
'abcd'>'abcc'
2.非填充空格式
1)逐个字符地比较每个字符串,从字符串左边开始.假设string1中的字符是char1,string2的字符是char2.
2)如果ASCII(char1)<ASCII(char2),那么string1<string2. 如果ASCII(char1)>ASCII(char2),那么string1>string2. 如果ASCII(char1)=ASCII(char2),那么继续比较sting1和string2中的下一个字符. 3)如果到达了string1的末尾而没有到达string2的末尾,那么string1<string2.
如果到达了string2的末尾而没有到达string1的末尾,那么string1>string2.
使用填充空格式比较语义,那么下面的条件将都返回为TRUE 'abc'='abc' 'ab'<'abc' 'abcd'>'abcc' 但是,下面的这个条件将会返回FALSE
'abc '='abc' --注意到等号左边的字符串结尾包含空格
3.说了二者区别,那么哪一种方式在何时使用呢?
PL/SQL仅在当两个进行比较的数值拥有固定长度的时候才使用填充空格语义. 如果其中有一个数值是变长的,那么就会使用非填充空格式语义.CHAR字符类是定长的,而VARCHAR2数据类型是变长的.字符文字(用单引号括起来)始终被认为是定长的.
做了个CHAR和VARCHAR2的实验,如下所示
可以看到,使用CHAR的时候删除了数据B,而是用VARCHAR时没有.(由于name列类型为CHAR(3),定长,而'B'只占了一个字节,所以在后面两个字节中会补充空格)
- oracle中的字符比较
- java中的字符创比较
- Oracle中的转义字符
- oracle中的字符问题
- oracle中的字符替换
- informix Oracle 字符类型比较整理
- Oracle字符和时间比较[L]
- oracle中的不可见字符
- oracle中的字符函数ascii
- oracle中的字符型函数
- oracle中的一些特殊字符
- oracle 中的空值比较
- ORACLE中的比较运算符
- 比较两个字符串中的字符,并交换
- Perl中的数字比较、字符比较及类型转换
- Oracle数据库中的字符处理技巧
- Oracle数据库中的字符处理技巧总结
- Oracle数据库中的字符处理技巧
- C#读取cpu序列号、mac序列号、硬盘id等电脑信息类
- CATT & eCATT {转载}
- 《边境之地》僵尸游戏大作公布
- Effective STL- 熟悉非标准的散列容器(hash 容器)
- PHP下ereg实现匹配ip的正则
- oracle中的字符比较
- 第3章 操作符
- Table Control {转载}
- 生成XML文档
- 表格隔行换色+鼠标点击变色 JS版,IE7,FF,OPERQ测试通过
- 转型c语言
- 懒惰是程序员的美德! 懒惰程序员的最爱AutoHotkey 尝鲜
- 使用 .Net Framework 的 System.CodeDom 命名空间动态生成源代码并编译
- 内核-编译器-busybox个版本之间的关系