【发布时间】:2011-01-03 21:29:35
【问题描述】:
我正在寻找 UTF8 的 MySQL 排序规则,它不区分大小写并区分“a”和“ä”(或更一般地说,区分变音符号/重音字符及其“纯”形式)。 utf8_general_ci 做前者,utf8_bin 后者,bot none 两者都做。如果没有这样的排序规则,我该怎么做才能在WHERE 子句中尽可能接近?
【问题讨论】:
标签: mysql utf-8 collation case-insensitive
我正在寻找 UTF8 的 MySQL 排序规则,它不区分大小写并区分“a”和“ä”(或更一般地说,区分变音符号/重音字符及其“纯”形式)。 utf8_general_ci 做前者,utf8_bin 后者,bot none 两者都做。如果没有这样的排序规则,我该怎么做才能在WHERE 子句中尽可能接近?
【问题讨论】:
标签: mysql utf-8 collation case-insensitive
我的建议是使用 utf8_bin 并在您的 WHERE 子句中,强制比较的两边为大写或小写。
【讨论】:
你可以试试utf8_swedish_ci,它不区分大小写,并且区分 a 和 ä(但将 ü 视为 是的)。
排序规则取决于语言,而且德语似乎没有自己的collation in MySQL。 (我看过你的个人资料,上面写着你是德国人。)
【讨论】:
使用utf8_german2_ci 作为排序规则在这里可以正常工作:
SELECT * FROM tablename WHERE fieldname LIKE "würz%" COLLATE utf8_german2_ci
【讨论】:
我像这样检查了utf8_bin
CREATE TABLE tmp2 (utf8_bin VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
INSERT INTO tmp2 VALUES ('nói');
select * from tmp2 where utf8_bin='noi';
【讨论】: