寻找特定的特殊字符SQL Server 2008 R2

时间:2017-11-14 15:18:44

标签: sql-server sql-server-2008-r2 special-characters

我需要在描述字段字符串/行中查找下面的特殊字符。其中一些是直截了当的,但有一些我无法弄清楚如何寻找:

Special characters:  < > { } [ ] " ' * = @ ~ | <Tab> (tab key) <Enter> (extra line (carriage return))

到目前为止:

select * from
table
where [Account description] like '[<>{}[]*=@~|]'

不确定如何识别以下特殊字符:

" (double quote)
' (single quote)
<Tab> (tab key) 
<Enter> (extra line (carriage return))

2 个答案:

答案 0 :(得分:2)

听起来你想要所有非字母数字字符?如果是这样,你可以使用

declare @table table (id int identity (1,1), column1 nvarchar(64))
insert into @table
values
('<'),
('>'),
('{'),
('}'),
('['),
(']'),
('"'),
(''''),
('*'),
('='),
('@'),
('~'),
('|'),
('a' + char(10)),
('b' + char(13)),
('c' + char(9)),
('a'),
('A'),
('1')

select *
from @table
where [Account description] like '%[^0-9a-zA-Z]%'

否则,您需要明确列出它们并为特殊情况使用转义值...

select * 
from @table 
where column1 like '%[<>{}![!]"''''*=@~|]%' ESCAPE '!'
or column1 like '%' + char(10) + '%'
or column1 like '%' + char(9) + '%'
or column1 like '%' + char(13) + '%'

答案 1 :(得分:0)

可能你可以尝试这样的事情:

select * from table
where [Account description] like '[<>{}[]*=@~|]' 
and [Account description] like '%''%'
and [Account description] like '%'+CAST(X'09' AS TEXT)+'%'
and ([Account description] like '%'+char(13)+'%'
or [Account description] like '%'+char(10)+'%)

但我认为会很慢。

相关问题