MySQL中INT数据类型最适合使用哪种排序规则?

10

当一个字段的数据类型为INT时,在MySQL中应该选择什么作为排序规则(collation)?


2
请原谅我是否有点天真,但排序规则(collation)不仅适用于字符数据(用于确定用于对字符进行排序的规则集)吗? - Yuliy
2个回答

21

字符排序规则(collation)会影响字符串的排序,但对于数字类型数据没有任何影响。

然而,它可能会影响嵌入在字符串中的数字的排序,但对于诸如INT这样的数字数据类型仍无影响。


1
你是对的--只是要补充一点:如果你处理多语言页面并且需要对列表进行排序,例如在波兰语中,并且必须强制使用适当的排序规则,:) 你可以使用例如INT列作为排序向量,那么最好设置排序规则(例如UTF8),否则你将会收到SQL错误,例如:“语法错误或访问冲突:1253排序规则'utf8_polish_ci'对于字符集'latin1'无效”。 - Jeffz
你可以通过在SELECT语句中的比较之后强制对字段进行排序:SELECT [...] WHERE last_name = 'Saldana' COLLATE utf8_unicode_ci AND age = 37; 如果你只是在那个句子的结尾添加COLLATE,排序将应用于年龄字段,从而触发关于“latin1”的(奇怪)错误。请尝试:http://sqlfiddle.com/#!9/491fd5/5 - user2513484

6
据我所知,您只能为字符串类型指定排序规则(或字符集),即类型VARCHAR、CHAR、ENUM、SET和TEXT类型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接