SQL编程之——3个易错知识点

1.utf8字符集默认排序规则大小写不敏感

  • 先来看一个示例:


    SQL编程之——3个易错知识点_第1张图片
    utf8.png-82.8kB
  • 通过上面的图片可以发现,utf8字符集在默认情况下是大小写不敏感的。这一特性是由utf8字符集的排序规则决定的:

    SQL编程之——3个易错知识点_第2张图片
    utf8_collate_name.png-19.1kB

  • “utf8_general_ci”就是utf8字符集的排序规则。排序规则的命名遵循一个规范:

  • _ci结尾表示大小写不敏感(case insensitive)

  • _cs结尾表示大小写敏感(case sensitive)

  • _bin表示二进制的比较(binary)

  • 通过show collation like 'utf8%';可以查看utf8都有哪些排序规则。我们选择一个不以_ci结尾的规则:utf8_bin。然后通过alter table t convert to character set utf8 collate utf8_bin;来修改表t字符集utf8的排序规则:

    SQL编程之——3个易错知识点_第3张图片
    utf8_bin.png-121kB

  • 是否需要大小写敏感要视需求而定,但utf8默认使用的是大小写不敏感的utf8_general_ci排序规则,在设计表时需要考虑到。

2.LENGTH函数和CHAR_LENGTH函数的区别

  • LENGTH函数返回的是字节长度,而CHAR_LENGTH函数返回的是字符长度
    SQL编程之——3个易错知识点_第4张图片
    图片.png-50.6kB

3.char和varchar进行比较时会忽略字符后的填充字符(空格)

  • 当一个字段的值为“abc ”时,以“abc”进行查询也会查到:


    SQL编程之——3个易错知识点_第5张图片
    2019-03-19 19:27:12.png-63.1kB
  • 需要注意的是,只会忽略字符后的空格,如果空格在字符前不会忽略:


    SQL编程之——3个易错知识点_第6张图片
    2019-03-19 19:31:43.png-20kB

END

你可能感兴趣的:(SQL编程之——3个易错知识点)