我有一个整理了utf8 / utf8_bin的数据库。 DB有阿拉伯语文本和重音字符(kasar等)。我想搜索没有重音字符的文本。
我做的是,我写了'喜欢'查询......
WHERE replace(field1,0x[CODE],'') like '%[arabic text]%' --- where [CODE] is the accent char.
当我用静态utf阿拉伯语文本代替field1时,这工作正常。但是当它从数据库字段运行时它不会被替换。
可能是db字段有latin1编码。我该如何解决/检查这个问题。
感谢。
答案 0 :(得分:2)
utf8_bin
是二进制排序规则 - 在比较字符方面非常直观且严格。
utf8_general_ci
更宽松,并将变音符号和重音标准化为“基本”版本:
Ä
=> A
Ü
=> U
等。
我之前从未使用过阿拉伯语,所以我不知道它是否适用于那些口音,但我希望如此。
您应该可以暂时使用这样的宽松归类:
WHERE field1 like '%[arabic text]%' COLLATE utf8_general_ci;