如果我的列的某些值以"%"开头像这样:
[ID]-----[VALUES]
1--------Amount
2--------Percentage
3--------%Amount
4--------%Percentage
我怎么能只有这两行用"选择"查询:
[ID]-----[VALUES]
3--------%Amount
4--------%Percentage
我尝试了这些查询,但他们没有工作:
select * from TABLE where VALUES like '[%]%'
select * from TABLE where VALUES like '\%%'
我知道在Java,C和其他语言中,退格\允许你使用一个快乐的角色,如:
var s = "I called him and he sad: \"Hi, there!\"";
在SQL中有类似的字符/函数吗?
所有答案将不胜感激,谢谢你阅读这个问题!
答案 0 :(得分:2)
您的查询
select * from TABLE where VALUES like '\%%'
应该有效。它之所以没有,是因为您可能已启用NO_BACKSLASH_ESCAPES
,这会将\
视为文字字符。
避免它的一种方法是使用LIKE BINARY
select * from TABLE where VALUES like binary '%'
或使用转义字符(可以是您选择的任何字符)规范。
select * from TABLE where VALUES like '~%%' escape '~'
答案 1 :(得分:1)
ESCAPE
上有一个LIKE
选项:
select *
from TABLE
where VALUES like '$%%' escape '$';
转义字符后面的任何内容都被视为常规字符。但是,默认值是反斜杠(请参阅here),因此带反斜杠的版本应该可以执行您想要的操作。
当然,你也可以使用正则表达式(尽管没有希望使用索引)。
注意:escape
是答案标准的一部分,因此它应该适用于任何数据库。
答案 2 :(得分:1)
试试这个:
select * from TABLE where VALUES like '%[%]%'
答案 3 :(得分:1)
你是对的,你需要一个转义字符。在SQL中,您必须定义转义字符。
SELECT * FROM TABLE where VALUES like ESCAPE '!';
我很确定你可以使用你想要的任何角色。
这是指向更详细的微软解释的链接。