SQL编程之——3个易错知识点
2019-03-19 本文已影响36人
agile4j
1.utf8字符集默认排序规则大小写不敏感
-
先来看一个示例:
utf8.png-82.8kB -
通过上面的图片可以发现,utf8字符集在默认情况下是大小写不敏感的。这一特性是由utf8字符集的排序规则决定的:
utf8_collate_name.png-19.1kB
-
“utf8_general_ci”就是utf8字符集的排序规则。排序规则的命名遵循一个规范:
-
_ci结尾表示大小写不敏感(case insensitive)
-
_cs结尾表示大小写敏感(case sensitive)
-
_bin表示二进制的比较(binary)
-
通过
utf8_bin.png-121kBshow collation like 'utf8%';
可以查看utf8都有哪些排序规则。我们选择一个不以_ci结尾的规则:utf8_bin。然后通过alter table t convert to character set utf8 collate utf8_bin;
来修改表t字符集utf8的排序规则:
-
是否需要大小写敏感要视需求而定,但utf8默认使用的是大小写不敏感的utf8_general_ci排序规则,在设计表时需要考虑到。
2.LENGTH函数和CHAR_LENGTH函数的区别
- LENGTH函数返回的是字节长度,而CHAR_LENGTH函数返回的是字符长度:
图片.png-50.6kB
3.char和varchar进行比较时会忽略字符后的填充字符(空格)
-
当一个字段的值为“abc ”时,以“abc”进行查询也会查到:
2019-03-19 19:27:12.png-63.1kB -
需要注意的是,只会忽略字符后的空格,如果空格在字符前不会忽略:
2019-03-19 19:31:43.png-20kB
END