这可能是一个愚蠢的问题,但任何人都可以解释为什么sql返回’False’
IF 'test' = ' test' -- notice leading space SELECT 'True' ELSE SELECT 'False'
但是返回’True’
IF 'test' = 'test ' -- notice trailing space SELECT 'True' ELSE SELECT 'False'
编辑:
我正在使用sql Server 2008 R2
解决方法
尾随空格被忽略.
如果你想真正测试它们是否相同,那么这样的事情:
DECLARE @foo nvarchar(50) = 'foo' DECLARE @foo2 nvarchar(50) = 'foo ' -- trailing space IF @foo = @foo2 AND DATALENGTH(@foo) = DATALENGTH(@foo2) --LEN ignores trailing spaces SELECT 'true' ELSE SELECT 'false'
为什么你的例子是真的:
http://www.timvw.be/2013/04/27/the-curious-case-of-trailing-spaces-in-sql/
根据http://www.andrew.cmu.edu/user/shadow/sql/sql1992.txt:
06001