关于空格的查询
我的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的查询结果。
------解决方案--------------------填充的长度是由该字段的长度决定的。