如何在T-SQL中转义百分号?

Jed*_*dja 169 t-sql sql-server

这个问题也有答案,但具体提到了DB2.

如何使用已包含百分号的字符串搜索字符串?该操作员使用的符号来表示通配符.LIKE%LIKE%

gbn*_*gbn 259

使用括号.所以要找75%

WHERE MyCol LIKE '%75[%]%'
Run Code Online (Sandbox Code Playgroud)

这比ESCAPE简单,并且对大多数RDBMS来说都很常见

  • [可以提供更好的基数估计(以及执行计划)](http://stackoverflow.com/a/18696341/73226) (3认同)
  • 另请注意,您不必在其他构造中转义百分号,例如用户函数,串联等. (2认同)
  • 您也可以转义下划线通配符:`[_]`.你怎么逃避开放的方括号呢?像这样:`[[]`.http://www.sqlserver2000.databases.aspfaq.com/how-do-i-search-for-special-characters-eg-in-sql-server.html (2认同)

Jed*_*dja 48

您可以使用ESCAPE关键字LIKE.只需将所需字符(例如'!')%添加到字符串中的每个现有符号,然后将ESCAPE '!'(或您选择的字符)添加到查询的末尾.

例如:

SELECT *
FROM prices
WHERE discount LIKE '%80!% off%'
ESCAPE '!'
Run Code Online (Sandbox Code Playgroud)

这将使数据库把80%作为字符串的实际部分来搜索,而不是80(通配符).

MSDN Docs for LIKE


Aar*_*and 13

WHERE column_name LIKE '%save 50[%] off!%'
Run Code Online (Sandbox Code Playgroud)