我用这个字段创建了一个表:
chr CHAR(1)
字符集和整理是: DEFAULT CHARSET = utf8 COLLATE = utf8_swedish_ci
好吧,即使我认为该字段只能包含一个字符,如果我插入的值如下:
insert into tbl values ('ö');
那么字段的长度将返回大于1.因此,sql:
select length(chr) from tbl where id = 1
返回2.为什么?我知道charset / collation事情可能是一个真正的痛苦。我从一开始就没有utf8_swedish_ci,因为我无法按字母顺序排序(因为字符ö是字母表中的最后一个字符,因此错误地取出了ö)。 所以我想我最好继续使用utf8_swedish_ci。但后来发生了这件坏事。谁知道如何解决这个问题?提前谢谢。
答案 0 :(得分:4)
MySQL length
函数返回以字节为单位的长度;您需要char_length
才能获得字符数。