首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-03-29 
关于空格的查询我的SQL语句如下EmployeeNum是16位长度的VARCHAR类型第一个查询条件是select*fromcEmployee

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

热点排行