我需要在描述字段字符串/行中查找下面的特殊字符。其中一些是直截了当的,但有一些我无法弄清楚如何寻找:
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))
答案 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)+'%)
但我认为会很慢。