有时候我们再查询的时候会发现看到和想要不一样的结果,比如看着表里的数据就是有这个值,可是按照这个值去查询的时候怎么也查询不到,这时候可能就是一些特殊字符在作怪了。比如下边:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([col] nvarchar(22))
Insert #T
select N'小明
'
Go
--测试数据结束
Select * from #T WHERE col='小明'
结果就是什么也没搜索到
这是因为表中插入的数据中包含回车、换行等特殊字符,所以查不到数据,平时我们可能碰到的还有其他特殊字符:
--CHAR(9)tab \t
--CHAR(10) 换行 \r
--CHAR(13) 回车 \n
因此我们需要特这些看不到的特殊字符进行特殊处理
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([col] nvarchar(22))
Insert #T
select N'小明
'
Go
--测试数据结束
SELECT
*
FROM
#T
WHERE
REPLACE(REPLACE(REPLACE(col, CHAR(9), ''), CHAR(10), ''), CHAR(13), '') = '小明';
替换掉即可,当然可能还有空格等字符,直接替换或者用RTRIM之类的函数处理即可。