在表中查找尾随空格

Ray*_*Ray 3 sql t-sql sql-server sql-server-2008

我想知道如何识别表格中的尾随空格.我正在使用SQL Server 2008并创建下表作为测试

CREATE TABLE  first_test_name
   ( 
   firstName varchar(255)
    )
Run Code Online (Sandbox Code Playgroud)

然后插入这样的记录:

insert into first_test_name (firstName)
values('Bob')
Run Code Online (Sandbox Code Playgroud)

然后我尝试插入一个空格,然后添加一个像这样的新记录:

insert into first_test_name (firstName)
values('Bob ') -- just 1 space
Run Code Online (Sandbox Code Playgroud)

并且第三次,

insert into first_test_name (firstName)
values('Bob  ')   -- two spaces used this time.
Run Code Online (Sandbox Code Playgroud)

现在,如果我查询'Bob'(没有空格),我仍然得到3.我的查询是:

select count(*) from first_test_name WHERE firstName = 'Bob'
Run Code Online (Sandbox Code Playgroud)

答案不应该是1吗?

此外,我sp_help在此表上使用了"Trim Trailing Blanks"的值设置为no.

那么为什么我得到3分?我只期待1.

在相关说明中,如果我使用此查询进行搜索

select * from first_test_name
where firstName like '% '
Run Code Online (Sandbox Code Playgroud)

然后我找到了两行的正确答案.

所以重申一下,问题是为什么我在搜索'Bob'时得到3分.此外,在这种情况下,"修剪尾随空白"是什么意思?

Mar*_*ith 6

为什么我在搜索'Bob'时得到3分?

SQL Server在大多数字符串比较中忽略尾随空格.

此外,在这种情况下,"修剪尾随空白"是什么意思?

这将告诉您ANSI_PADDING创建表时的选项集.

如何识别带有1或2个尾随空格的那两个?

这是一种方式.

SELECT *
FROM first_test_name 
WHERE firstName LIKE 'Bob '
Run Code Online (Sandbox Code Playgroud)

并找到没有尾随空格的

SELECT *
FROM first_test_name 
WHERE firstName LIKE 'Bob' AND firstName NOT LIKE 'Bob '
Run Code Online (Sandbox Code Playgroud)