我无法找到在mysql查询中转义撇号(')的正确方法。我有正则表达式,可以使用在线工具进行正则表达式测试。
有问题的示例是字符串G’Schlössl
。
我想在s
字符G(’?)Schlö(’?)ssl
前面的查询中包含可选撇号,以查看其他字符串中可能出现的所有不同情况。我不确定问题是否是由错误的符号转义引起的,但我尝试了很多选项,例如’?
,\’?
,\’{0,1}
,这些选项适用于第一次出现但不适用于第二个可选项和导致查询不返回任何内容。 ’’?
,[’]?
,[\’]?
,[\’]{0,1}
等其他可能性即使是第一种也无效。
select id, name from restaurant where name regexp '.*g\’?(s|ß|ss|sz)chl(o|ö|oe)\’?s.*';
当我删除最后一个\’?
时,它会起作用:
select id, name from restaurant where name regexp '.*g\’?(s|ß|ss|sz)chl(o|ö|oe)s.*';
当我用\’?
替换最后一个x?
时,它也有效:
select id, name from restaurant where name regexp '.*g\’?(s|ß|ss|sz)chl(o|ö|oe)x?s.*';
问题出在哪里或者还有什么可以尝试?
This thread解释了只撤销正常的单引号,这似乎不适用于我的情况。
答案 0 :(得分:0)
而不是\’?
,请尝试(’)?
。我认为?
可能仅适用于’
的最后一个字节。通过使用括号,?
适用于" RIGHT SINGLE QUOTATION MARK"的全部3个字节(十六进制E28099
)。