MySql 正则表达式转义撇号 (')

MySql regexp escaping apostrophe(’)

我找不到在 mysql 查询中转义撇号 (’) 的正确方法。我有正则表达式,可以很好地与用于正则表达式测试的在线工具一起使用。

有问题 示例 是字符串 G’Schlössl.

我想在 s 字符 G(’?)Schlö(’?)ssl 前面的查询中添加 可选撇号,以应对其他可能出现的所有不同情况字符串。我不确定问题是否是由不正确的符号转义引起的,但我尝试了很多选项,例如 ’?\’?\’{0,1},这对第一次出现有效但对第二次无效可选的一个 导致查询 return 什么都没有 ’’?[’]?[\’]?[\’]{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 仅解释了转义普通单引号,这在我的情况下似乎不起作用。

尝试 (’)? 而不是 \’?。我在想 ? 可能只适用于 的最后一个字节。通过使用括号,? 适用于 "RIGHT SINGLE QUOTATION MARK".

的整个 3 个字节(十六进制 E28099