我在MySQL中有一个字符串(varchar),并希望将"
和\"
作为不同的字符处理。我怎样才能做到这一点?
示例:
select locate('"', '\"Easy\" "');
答案是1,我想要结果10.
答案 0 :(得分:2)
\"
不是字符 - 它是字符串中"
的转义序列 - \\\"
是字符序列的转义序列 { {1}}。
如果您要搜索字符序列 \"
而不是"
,则\"
将至少为您提供答案如果< / strong>它在那里:
REGEXP
修改强>
只是为了清除对引用转义的疑惑:
SELECT '\\\"Easy\\\" \"' REGEXP '[^\\]\"'; -- gives 1
SELECT '\\\"Easy\\\" x' REGEXP '[^\\]\"'; -- gives 0
与'\"'
相同'"'
与"\'"
相同强烈建议始终使用转义,即使它是可选的。
修改2
@Dukeling指出,我忘记了以"'"
开头的字符串的边缘情况。这解决了它:
"
答案 1 :(得分:0)
虽然您使用单个qotes作为分隔符,但双引号仍会被转义并仅被视为双引号。如果您确实在字段中保存了反斜杠,则可以将其模拟为:
SELECT LOCATE('“','\”Easy \“”');
编辑:忘了“不应该匹配。使用正则表达式,正如欧根建议的那样。