如何使音标不敏感?
例如,这个带有波斯语音标的字符串
هواى بَر آفتابِ بارِز
在MySQL中与去除音标后的字符串不同
هواى بر آفتاب بارز
有没有办法告诉MySQL忽略音标,还是我必须手动删除字段中的所有音标?
如何使音标不敏感?
例如,这个带有波斯语音标的字符串
هواى بَر آفتابِ بارِز
在MySQL中与去除音标后的字符串不同
هواى بر آفتاب بارز
有没有办法告诉MySQL忽略音标,还是我必须手动删除字段中的所有音标?
这有点像大小写不敏感的问题。
SELECT * FROM blah WHERE UPPER(foo) = "THOMAS"
SELECT arabic_word FROM Word
WHERE
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(HEX(REPLACE(
arabic_word, "-", "")), "D98E", ""), "D98B", ""), "D98F", ""), "D98C",
""),"D991",""),"D992",""),"D990",""),"D98D","") LIKE ?', '%'.$search.'%'
十六进制格式化的值是我们想要过滤掉的变音符号。虽然不太美观,但我没有找到其他答案。
SELECT arabic_word
FROM Word
WHERE ( arabic_word REGEXP '{$search}' OR SOUNDEX( arabic_word ) = SOUNDEX( '{$search}' ) );
我还没有检查过SOUNDEX函数的成本。我猜这可能适用于小表,但不适用于大型数据集。
设置
set names 'utf8'
在进行拉丁语查询之前,通常可以解决问题。我不确定这是否也适用于阿拉伯语。
你是否已经阅读完MySQL字符集支持,以检查你的问题是否已经在其中得到解答?特别是需要理解排序规则。
我猜测使用utf8_general_ci可能对你有帮助。
dictionary
WHERE upper(nekudot)="כדי";) 可以找到 כְּדֵי。谢谢! - xerostomus