php - MySQL 通过 "oe"、 "ae"、 "ue"找到元音变音

标签 php mysql regex

我正在尝试构建一个 MySQL 搜索查询。 LIKE 完全没问题,但客户希望输入“oe”查找“ö”、“ae”查找“ä”和“ue”查找“ü”,因为这在德国相当普遍。< br/> 在将每次出现的“oe”替换为 (oe|ö) 之后,我尝试使用 REGEXPREGEXP 是严格的并且不匹配(对于例如)“é”到“e”。
有没有办法让 LIKE 匹配“oe|ue|ae”或者我没有想到的其他方式?
谢谢,
托马斯

最佳答案

Character Sets and Collations Supported by MySQL我只能发现两个德语排序规则:

  • latin1_german1_ci
  • latin1_german2_ci

似乎latin1_german2_ci是你想要的,但它需要 Latin1:

latin1_german2_ci (phone-book) rules:

  • Ä = AE
  • Ö = OE
  • Ü = UE
  • ß = ss

如果您的表/列尚未使用它,您可以在查询本身中强制进行此类排序,例如:

mysql> SELECT _latin1'oe' collate latin1_german2_ci ='ö' AS are_equal;
+-----------+
| are_equal |
+-----------+
|         1 |
+-----------+
1 row in set (0.00 sec)

如果您的应用程序使用 Latin1,这应该可以解决问题。否则,我真的不知道:)

免责声明:我对德语一无所知。可能有另一种语言使用类似的规则。

关于php - MySQL 通过 "oe"、 "ae"、 "ue"找到元音变音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38636176/

相关文章:

正则表达式,无法排除冒号(:)

javascript - 通过正则表达式拆分是重复参数 NodeJs

php - 如何像这个 QBasic 程序一样在 PHP 中读取 RS232 串口

PHP session 登录系统

javascript - gzinflate字符串通过JS压缩

PHP/MySQL : How to return info if record already exists (without update)

php - 如何防止 EntityManager (Doctrine Association) 删除

java - SQLite 数据库到 MySQL 数据库每日迁移/更新新字段

php - connect.php 无法连接

regex - 仅解析具有多个匹配的行中的第一个正则表达式匹配