当等于应该工作时,条款需要

时间:2011-07-08 17:06:26

标签: sql-server-2005

我有一个我认为应该是这样的查询:

select *
from Requesters
where CITIZEN_STATUS = 'OS-IE ';

字段CITIZEN_STATUS,其数据类型为varchar(15),具有此特定值的尾随空格。我已经将它粘贴到Notepad ++中并使用十六进制编辑器查看它,最终的空间确实是0x20。

要使查询起作用,我必须这样写:

select *
from Requesters
where CITIZEN_STATUS like 'OS-IE%';

所以,显然,我有一个解决方法,问题并不紧急。但我真的很想知道为什么第一个查询无法达到我的预期。有没有人有任何想法?

我应该提到我正在使用SQL Server 2005,并且可以根据需要提供有关配置的更多信息。

1 个答案:

答案 0 :(得分:0)

在MySQL 5中,此查询有效。但是,它不区分尾随空格。查询匹配'OS-IE'以及'OS-IE'。在SQL Server 2005中,您可以使用定义行尾的正则表达式。对此的正确字符是美元符号'$',表示您确实需要空格。见http://msdn.microsoft.com/en-us/magazine/cc163473.aspx