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
)
我找不到在 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".
E28099
)