处理MySQL中的转义引号字符

时间:2013-05-28 10:11:53

标签: mysql

我在MySQL中有一个字符串(varchar),并希望将"\"作为不同的字符处理。我怎样才能做到这一点?

示例:

select locate('"', '\"Easy\" "'); 

答案是1,我想要结果10.

2 个答案:

答案 0 :(得分:2)

\"不是字符 - 它是字符串中"的转义序列 - \\\"字符序列的转义序列 { {1}}。

如果您要搜索字符序列 \"而不是",则\"将至少为您提供答案如果< / strong>它在那里:

REGEXP

修改

只是为了清除对引用转义的疑惑:

  • 单个引号内,双引号的转义是可选的:SELECT '\\\"Easy\\\" \"' REGEXP '[^\\]\"'; -- gives 1 SELECT '\\\"Easy\\\" x' REGEXP '[^\\]\"'; -- gives 0 '\"'相同
  • double 引号内,单引号的转义是可选的:'"'"\'"相同

强烈建议始终使用转义,即使它是可选的。

修改2

@Dukeling指出,我忘记了以"'"开头的字符串的边缘情况。这解决了它:

"

答案 1 :(得分:0)

虽然您使用单个qotes作为分隔符,但双引号仍会被转义并仅被视为双引号。如果您确实在字段中保存了反斜杠,则可以将其模拟为:

SELECT LOCATE('“','\”Easy \“”');

编辑:忘了“不应该匹配。使用正则表达式,正如欧根建议的那样。