我需要在SQL Server 2014中按顺序查找包含[]
的符号!@#$%^&[]{}<>?/,.*(^
和like
表达式。
如何通过括号来查找包含目标字符串的记录?
实施例
SELECT *
FROM [TARGET_TABLE]
WHERE [TARGET COLUMN] LIKE '%"!@#$^&[]{}<>?/,.*(^"%';
[TARGET TABLE]
有一行[TARGET COLUMN]
,其值为
some text "!@#$^&[]{}<>?/,.*(^"
但表达式的结果为空。
我知道[]
是通配符,但不知道如何使用转义括号查找字符串。
答案 0 :(得分:2)
LIKE
有一个转义字符,默认情况下为\
。您可以将其设置为其他内容。所以这应该有效:
SELECT *
FROM [TARGET_TABLE]
WHERE [TARGET COLUMN] LIKE '%"!@#$^\[\]{}<>?/,.*(^"%';
您可以将其设置为其他角色,但很难选择给定角色的角色:
SELECT *
FROM [TARGET_TABLE]
WHERE [TARGET COLUMN] LIKE '%"!@#$^+[+]{}<>?/,.*(^"%' ESCAPE '+'
但是,如果你想要更一般,也许你想要^
一个字符集。例如,获取包含任何非字母数字字符的列:
SELECT *
FROM [TARGET_TABLE]
WHERE [TARGET COLUMN] LIKE '%[^a-zA-Z0-9]%';
或者,如果您要查找仅包含非字母数字字符的列:
SELECT *
FROM [TARGET_TABLE]
WHERE [TARGET COLUMN] NOT LIKE '%[a-zA-Z0-9]%';
这个想法当然可以扩展到其他角色集。
答案 1 :(得分:0)
我用过这个
Create Table #Rohit (VarcharValues varchar(255))
Insert into #Rohit values
('"!@#$^&[]{}<>?/,.*(^"')
然后这个
SELECT * FROM [#Rohit] WHERE VarcharValues LIKE '%"!@#$^&\[]%' Escape '\'