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

SQL - How to use wildcard in LIKE as a normal character

如果我有一列包含一些以“%”开头的值,如下所示:

[ID]-----[VALUES]
1--------Amount
2--------Percentage
3--------%Amount
4--------%Percentage

我怎样才能在 "select" 查询中只有这两行?:

[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?
中有类似的 character/function 所有答案将不胜感激,感谢您阅读问题!

LIKE 上有一个 ESCAPE 选项:

select *
from TABLE
where VALUES like '$%%' escape '$';

转义字符后面的任何内容都被视为常规字符。然而,默认是反斜杠(见here),所以带反斜杠的版本应该做你想做的。

当然,你也可以使用正则表达式(虽然那没有希望使用索引)。

注意:escape 是答案标准的一部分,因此它应该适用于任何数据库。

试试这个:

select * from TABLE where VALUES like  '%[%]%'

你说得对,为此你需要一个转义符。在 SQL 你必须定义转义字符。

SELECT * FROM TABLE where VALUES like ESCAPE '!';

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

这里有一个 link 的微软解释,其中有更详细的说明。

Microsoft explanation

MySQL Explanation

您的查询

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 '~'