我試圖建立一個MySQL搜索查詢。 LIKE
會很好,但客戶希望用「oe」找到「ö」,「ae」找到「ä」和「ue」找到「ü」,因爲這在德國很常見。
我試着用REGEXP
代替每個「oe」出現在(oe|ö)
之後,但REGEXP
是嚴格的並且不符合(例如)「é」到「e」。
有沒有辦法讓LIKE
匹配「oe | ue | ae」或者其他一些我沒有的方式?
謝謝,
托馬斯MySQL找到umlaute by「oe」,「ae」,「ue」
5
A
回答
8
在Character Sets and Collations Supported by MySQL我只能發現兩名德國歸類:
- latin1_german1_ci
- latin1_german2_ci
看來latin1_german2_ci是你想要的,但它期望拉丁文1:
latin1_german2_ci
(電話簿)規則:
- △= AE
- O = OE
- U = UE
- SS = SS
如果您的表/列還沒有使用它,你可以在查詢本身中強制這種排序規則,例如:
mysql> SELECT _latin1'oe' collate latin1_german2_ci ='ö' AS are_equal;
+-----------+
| are_equal |
+-----------+
| 1 |
+-----------+
1 row in set (0.00 sec)
如果您的應用程序正在使用Latin1,這應該可以做到。否則,我真的不知道:)
聲明:我對德語一無所知。可能有另一種語言使用類似的規則。
0
如果您使用utf8,COLLATE utf8_german2_ci
是必需的。見collation chart(而且,根據該圖表,german2
是滿足您的需求,唯一的一個。)
mysql> SELECT "oe" = "ö" COLLATE utf8_german2_ci;
+-------------------------------------+
| "oe" = "ö" COLLATE utf8_german2_ci |
+-------------------------------------+
| 1 |
+-------------------------------------+
然而,這是更有效的申報列(S)爲COLLATE utf8_german2_ci
,而不是使用條款在比較中。
(如果您使用的是utf8mb4,請相應地更改拼寫。)
相關問題
- 1. 轉換ÆØÅ到AE OE AA
- 2. 找不到MySQL ORDER BY
- 3. 在輸入時替換「umlaute」像ÄÖÜ
- 4. 替換軌道中的SEO鏈接的umlaute(äüö) - 最佳方式
- 5. OE/AM同步
- 6. group by by by by mysql
- 7. Mysql group by by by by?
- 8. MYSQL,在搜索時有AE等於Æ
- 9. 德國「UE」 - 在Lucene的
- 10. $ ae。 javascript notation
- 11. 應用ORDER BY到UNION MYSQL
- 12. Mysql COUNT,GROUP BY和ORDER BY
- 13. MySQL ORDER BY,GROUP BY內JOIN
- 14. MYSQL GROUP BY/ORDER BY confusion
- 15. MySQL ORDER BY或GROUP BY
- 16. mysql order by tag occurrence group by
- 17. MYSQL GROUP BY + ORDER BY FIELD()
- 18. Mysql Group by time by mutilple condition
- 19. Mysql組by by order by not working
- 20. mysql group by and by by不工作
- 21. mysql group by子句找到多個匹配點
- 22. MYSQL找到數
- 23. os x進程狀態UE
- 24. JOIN(SELECT ...)ue ON 1 = 1?
- 25. Laravel Umlaute的驗證
- 26. NSString與umlaute編碼
- 27. After AE插件是用AE sdk跨平臺製作的嗎?
- 28. Mysql Order by Tweak
- 29. MySQL GROUP by Regex?
- 30. MySQL count group by
哇,這很快。在我完成之前降低投票... :( – thomas
可能考慮投資於像Solr這樣的搜索引擎。 – apokryfos
提示:在mysql中設置utf8_general,然後'e'將會找到'è'http://stackoverflow.com/questions/2344118/utf -8-general-bin-unicode – JustOnUnderMillions