我想知道是否可以使用MySQL和PHP比较两个字符串并获得相同的结果。在MySQL中我有:
a = b collate utf8_general_ci
对于PHP,我找到了一种有希望的方法来使用Transliterator class
transliterator_transliterate($a, 'NFD; [:Nonspacing Mark:] Remove; NFC; Lower();') = transliterator_transliterate($b, 'NFD; [:Nonspacing Mark:] Remove; NFC; Lower();')
两者在大多数情况下都会做同样的事情,但似乎没有办法比较PHP中的两个字符串,包括重音不敏感和不区分大小写,与MySQL兼容。
有没有更好的解决方案在PHP和MySQL中获得相同的结果,或者这是否应该避免,将所有比较移动到数据库或应用程序代码?
上下文是MySQL和专有数据库之间的复制。我在MySQL的文本字段中有一个唯一的密钥。另一方面,我在内存中有数千行,我想在PHP中过滤唯一值,而不是先尝试将它们插入MySQL表中。我的方法是将这些值用作数组中的键,以使它们保持唯一。问题现在归结为将这些键规范化,以便将相同的值视为与MySQL中的唯一索引相同。