【问题标题】:How to escape literal percent sign when NO_BACKSLASH_ESCAPES option is enabled?启用 NO_BACKSLASH_ESCAPES 选项时如何转义文字百分号?
【发布时间】:2011-06-28 13:17:51
【问题描述】:

我的公司在 NO_BACKSLASH_ESCAPES 模式下运行 MySQL。在这种模式下,如何在 LIKE 查询中转义文字 %_?标准方式是\%,但在这种模式下不起作用。

示例:列具有以下值:5% off50% off。以下查询在标准模式下有效,但在 NO_BACKSLASH_ESCAPES 模式下无效:

SELECT * FROM mytable
WHERE mycol LIKE '5\% off'

【问题讨论】:

  • %% 可以解决问题吗?
  • @Marc 不,那是我的第一次尝试

标签: mysql escaping special-characters


【解决方案1】:

你需要逃跑

select * from mytable
where mycol like '5\% off' escape '\';

对于无论 NO_BACKSLASH_ESCAPES 模式如何都有效的版本,您可以使用不同的字符,例如管道:

select * from mytable
where mycol like '5|% off' escape '|';

【讨论】:

  • 谢谢。反斜杠周围需要有单引号,而不是双引号。
  • 哦,是一样的,因为在 NO_BLACKSLASH_ESCAPES 中转义了逃逸
  • @ajreal 你的意思是NO_BACKSLASH_ESCAPES
  • 反斜杠也需要转义,我冒昧地更新了您的答案。
  • @Benjamin 实际上您的编辑引入了语法错误。问题是专门询问 NO_BACKSLASH_ESCAPES 模式下的 MySQL。在那种模式下,反斜杠不是转义字符
猜你喜欢
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多