读书人

关于空格的查询,该如何解决

发布时间: 2012-03-29 12:53:12 作者: rapoo

关于空格的查询
我的SQL语句如下
EmployeeNum是16位长度的VARCHAR类型

第一个查询条件是
select * from cEmployee where EmployeeNum= 'ASD12 '
第二个查询条件是
select * from cEmployee where EmployeeNum= 'ASD12 '
第三个查询条件是
select * from cEmployee where EmployeeNum= ' ASD12 '

查询结果
1,2相同,表明字符串后面的空格在查询条件里不起任何作用
3和1,2不相同,表明字符串前面的空格是起作用的

请高人提点,为什么会这样???



[解决办法]
varchar类型指定某个列或变量的字符值长度小于指定大小时,SQL Server不会将空格加到其后
即 'ASD12 '和 'ASD12 '是相同的结果
但是空格加到前面的话,就会有几个空格算几个
'ASD12 '和 ' ASD12 '就不会有相同的结果
[解决办法]
当SET ANSI_PADDING ON 的时候,字符窜 'ASD12 '的存储会自动在其最后用空格填充至16位长度。
所以会有LZ的查询结果。
[解决办法]
填充的长度是由该字段的长度决定的。

读书人网 >SQL Server

热点推荐