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分.此外,在这种情况下,"修剪尾随空白"是什么意思?
为什么我在搜索'Bob'时得到3分?
此外,在这种情况下,"修剪尾随空白"是什么意思?
这将告诉您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)