捷克语“ 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)
标签:collation,mysql,sql 来源: https://codeday.me/bug/20191023/1912990.html