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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值