SQL SERVER特殊字符处理

       有时候我们再查询的时候会发现看到和想要不一样的结果,比如看着表里的数据就是有这个值,可是按照这个值去查询的时候怎么也查询不到,这时候可能就是一些特殊字符在作怪了。比如下边:

--测试数据
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之类的函数处理即可。

发布了109 篇原创文章 · 获赞 42 · 访问量 57万+

猜你喜欢

转载自blog.csdn.net/sinat_28984567/article/details/97374142