使用IF的SQL字符串比较

前端之家收集整理的这篇文章主要介绍了使用IF的SQL字符串比较前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这可能是一个愚蠢的问题,但任何人都可以解释为什么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

猜你在找的MsSQL相关文章