美文网首页MySQL
SQL编程之——3个易错知识点

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

作者: agile4j | 来源:发表于2019-03-19 19:41 被阅读36次

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

    • 先来看一个示例:


      utf8.png-82.8kButf8.png-82.8kB
    • 通过上面的图片可以发现,utf8字符集在默认情况下是大小写不敏感的。这一特性是由utf8字符集的排序规则决定的:

      utf8_collate_name.png-19.1kButf8_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的排序规则:

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

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

    • LENGTH函数返回的是字节长度,而CHAR_LENGTH函数返回的是字符长度
      图片.png-50.6kB图片.png-50.6kB

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

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


      2019-03-19 19:27:12.png-63.1kB2019-03-19 19:27:12.png-63.1kB
    • 需要注意的是,只会忽略字符后的空格,如果空格在字符前不会忽略:


      2019-03-19 19:31:43.png-20kB2019-03-19 19:31:43.png-20kB

    END

    相关文章

      网友评论

        本文标题:SQL编程之——3个易错知识点

        本文链接:https://www.haomeiwen.com/subject/hxanmqtx.html