SQL - 如何在LIKE中使用通配符作为普通字符

时间:2017-01-26 16:53:41

标签: mysql sql wildcard sql-like

如果我的列的某些值以"%"开头像这样:

[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中有类似的字符/函数吗?
所有答案将不胜感激,谢谢你阅读这个问题!

4 个答案:

答案 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 '!';

我很确定你可以使用你想要的任何角色。

这是指向更详细的微软解释的链接。

Microsoft explanation

MySQL Explanation