首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL通过"oe“、"ae”、"ue“找到umlaute

MySQL通过"oe“、"ae”、"ue“找到umlaute
EN

Stack Overflow用户
提问于 2016-07-28 12:19:29
回答 2查看 2.3K关注 0票数 6

我正在尝试构建一个MySQL搜索查询。LIKE很好,但客户希望输入"oe“、find”“、"ae”、"ue“查找"ü”,因为这在德国相当常见。

在将"oe“替换为”REGEXP“后,我尝试使用(oe|ö),但是REGEXP非常严格,与(例如) "é”与"e“不匹配。

是否有办法使LIKE与“oe_ue_ue_ae”相匹配,或者其他我从未想过的方式?

谢谢,

托马斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-28 12:31:11

MySQL支持的字符集和排序规则,我只能看到两个德文排序规则:

  • latin1_german1_ci
  • latin1_german2_ci

词学似乎是您想要的,但是它期望Latin1:

latin1_german2_ci (电话簿)规则:

  • 艾尔
  • OE
  • 于聚= UE
  • S= ss

如果您的表/列尚未使用它,则可以在查询本身强制执行这种排序规则,例如:

代码语言:javascript
复制
mysql> SELECT _latin1'oe' collate latin1_german2_ci ='ö' AS are_equal;
+-----------+
| are_equal |
+-----------+
|         1 |
+-----------+
1 row in set (0.00 sec)

如果您的应用程序使用的是Latin1,那么这应该可以做到这一点。否则,我真的不知道:)

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

票数 9
EN

Stack Overflow用户

发布于 2016-07-29 17:34:59

如果您使用的是utf8,则需要COLLATE utf8_german2_ci。请参阅http://mysql.rjweb.org/utf8_collations.html (根据该图表,german2是满足您需求的唯一一个)。

代码语言:javascript
复制
mysql> SELECT "oe" = "ö" COLLATE utf8_german2_ci;
+-------------------------------------+
| "oe" = "ö" COLLATE utf8_german2_ci  |
+-------------------------------------+
|                                   1 |
+-------------------------------------+

但是,将列声明为COLLATE utf8_german2_ci比在比较中使用该子句要有效得多。

(如果使用的是utf8mb4,则相应地更改拼写。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38636176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档