char类型的字段为什么会忽略末尾的空格?
时间:2011-09-09
来源:互联网
SQL> desc test_char
Name Type Nullable Default Comments
---- ------- -------- ------- --------
ID NUMBER Y
NAME CHAR(6) Y
SQL> select * from test_char where name='abcd';
ID NAME
---------- ------
1 abcd
SQL> select * from test_char where name='abcd ';
ID NAME
---------- ------
1 abcd
SQL> select * from test_char where name='abcd ';
ID NAME
---------- ------
1 abcd
SQL> select * from test_char where name='abcd ';
ID NAME
---------- ------
1 abcd
Name Type Nullable Default Comments
---- ------- -------- ------- --------
ID NUMBER Y
NAME CHAR(6) Y
SQL> select * from test_char where name='abcd';
ID NAME
---------- ------
1 abcd
SQL> select * from test_char where name='abcd ';
ID NAME
---------- ------
1 abcd
SQL> select * from test_char where name='abcd ';
ID NAME
---------- ------
1 abcd
SQL> select * from test_char where name='abcd ';
ID NAME
---------- ------
1 abcd
作者: BTxigua 发布时间: 2011-09-09
这东西看文档就行了,char,nchar,字符串字面量和varchar2等不同,采用的是填补空格的比较规则,也就是短的会在尾部补空格等长度一致后比较,varchar2神马的是非填补空格的比较
这东西一般人不注意,看文档看的就是这些容易迷惑的
这东西一般人不注意,看文档看的就是这些容易迷惑的
作者: dingjun123 发布时间: 2011-09-09
QUOTE:原帖由 dingjun123 于 2011-9-9 10:39 发表
这东西看文档就行了,char,nchar,字符串字面量和varchar2等不同,采用的是填补空格的比较规则,也就是短的会在尾部补空格等长度一致后比较,varchar2神马的是非填补空格的比较
这东西一般人不注意,看文档看的就是这些容易迷惑的
这东西看文档就行了,char,nchar,字符串字面量和varchar2等不同,采用的是填补空格的比较规则,也就是短的会在尾部补空格等长度一致后比较,varchar2神马的是非填补空格的比较
这东西一般人不注意,看文档看的就是这些容易迷惑的
这个我知道。
为什么在where条件里面无论加多少个空格都可以匹配呢?
作者: BTxigua 发布时间: 2011-09-09
QUOTE:原帖由 BTxigua 于 2011-9-9 10:48 发表
这个我知道。
为什么在where条件里面无论加多少个空格都可以匹配呢?
这个我知道。
为什么在where条件里面无论加多少个空格都可以匹配呢?
你的where不是比较吗?左边是char,右边字面量,就是填补空格的比较啦,只要把空格全都去掉后字面量一样就相等,你把字面量改成varchar2就不一样了
你既然知道这规则怎么还不明白呢?
dingjun123@ORADB> select * from dual where cast('abcd' as char(10))=cast('abcd' as varchar2(10));
未选定行
已用时间: 00: 00: 00.00
dingjun123@ORADB> select * from dual where cast('abcd' as char(10))='abcd';
D
-
X
已选择 1 行。
已用时间: 00: 00: 00.07
dingjun123@ORADB> select * from dual where cast('abcd' as varchar2(10))='abcd ';
未选定行
已用时间: 00: 00: 00.00
已用时间: 00: 00: 00.03
dingjun123@ORADB> select * from dual where cast('abcd' as varchar2(10))='abcd';
D
-
X
已选择 1 行。
已用时间: 00: 00: 00.01
作者: dingjun123 发布时间: 2011-09-09
无论尾部多少空格只要去掉尾部的空格的字面量一样就是一样的,padding规则
先比较字符串长度,短的那端尾部补空格后比较
先比较字符串长度,短的那端尾部补空格后比较
作者: dingjun123 发布时间: 2011-09-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28