搜索

时间:2016-10-07 08:33:31

标签: php mysql collation collate

我用PHP和MySQL实现搜索。目前,我的表格整理为"utf8_unicode_ci"。问题是,使用此排序规则"ä" = "a"是。如果我将整理更改为"utf_bin"一切正常,但整理并非具有案例性。

所以我希望两者都不用"upper""lower"更改SQL或PHP代码:)

我搜索的最佳MySQL整理是什么?

1 个答案:

答案 0 :(得分:0)

通常,您不能这样做,并且在代码中使用lower是一种适用于所有类型字符和语言的安全方法。对于某些语言,有专门的排序规则可以支持您的比较,但可能会有一些并发症。对于'ä' = 'Ä' != 'A',您可以使用utf8_german2_ci德语电话簿订购)。它会在比较中将以下字符视为相等:

Ä = Æ = AE
Ö = Œ = OE
Ü = UE
ß = ss

但是比较(例如=, <, >)的字面意思是:因为整理实际上与排序有关,这种整理具有 'AE' = 'Ä'的奇怪副作用,但不是'AE' like 'Ä'在您的代码中考虑这一点可能比在任何地方简单地添加lower更难,并且可能会在以后导致一些大脑扭曲效应。但是如果你可以忍受这一点,而且你不需要支持其他特殊字符而不仅仅是德语变音符号(例如'à''á''å'仍将被视为{{{ 1}}),你可以尝试一下。

示例:

'a'