捷克语“ ch”字母如何存储在mysql中以及如何使用substr获得它?

甚至“ ch”也显示为两个字母,在捷克语中它被视为一个字母,并且其字母顺序在H字母之后(因此正确的顺序是a,b,c,d,e,f,g,h,ch,i, j(我跳过了一些国家字符)但是当我这样做时
包含以ch Im开头的单词的列上的substr(colname,1,1)仅获得“ C”

此sql:SELECT SUBSTRING(title,1,1)AS title_truncated FROM节点node WHERE node.type in(‘termin’)GROUP BY title_truncated ORDER BY title_truncated ASC“

返回:A,B,C,D,E,F,G,H,I,J(所以没有ch).

btw数据库正在使用utf8_czech_ci

解决方法:

Ch本身不是Unicode中的字符,而是一个digraph.

因此,数据库排序规则似乎无法正确映射差异. @Ladislav在评论中说的内容以及该mySQL internals discussion,中的用户似乎都支持这一点.

您可能需要手动解决此问题,例如在您的示例中,使用IF子句测试“ Ch”的存在,并在这种情况下返回两个字符.

参考号:utf8_czech_ci collation table (mySQL 6)

上一篇:mysql-哪个SQL排序规则用于é等特殊字符?


下一篇:sqlalchemy的不区分大小写比较