加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用IF的SQL字符串比较

发布时间:2020-12-12 06:35:20 所属栏目:MsSql教程 来源:网络整理
导读:这可能是一个愚蠢的问题,但任何人都可以解释为什么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返回’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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读