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 的微软解释,其中有更详细的说明。
您的查询
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 '~'
如果我有一列包含一些以“%”开头的值,如下所示:
[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 的微软解释,其中有更详细的说明。
您的查询
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 '~'