前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LENGTH 和 CHAR_LENGTH 的区别

LENGTH 和 CHAR_LENGTH 的区别

作者头像
保持热爱奔赴山海
发布2019-09-18 14:54:07
1K0
发布2019-09-18 14:54:07
举报
文章被收录于专栏:饮水机管理员饮水机管理员

环境: MySQL

注意点:

char(N) 和 varchar(N) 这里的N指的是字符长度,而不是字节长度。就是说可以插入N个字符的长度的内容(不管插入的是英文还是中文,反正是按照长度算的)。

    看如下例子:

    > CREATE table t1 ( a CHAR(3)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

    > CREATE table t2 ( a CHAR(3)) ENGINE=InnoDB DEFAULT CHARSET=gbk ;

    > SELECT a ,length(a),CHAR_LENGTH(a) from t1;

    +--------+-------------+------------------+

    | a      |   length(a) |   CHAR_LENGTH(a) |

    |--------+-------------+------------------|

    | 111    |           3 |                3 |

    | 你好啊 |           9 |                3 |   utf8字符集,一个汉字占3个字节宽度,因此这里length(a)是9bytes长度,字节长度为9

    +--------+-------------+------------------+

    # length():         计算的是内部存储时候这个字段在磁盘上占据的长度。  一个汉字是算三个字符,一个数字或字母算一个字符

    # CHAR_LENGTH():   计算的是字段字符串的长度。不管汉字还是数字或者是字母都算是一个字符

    > SELECT a ,length(a),CHAR_LENGTH(a) from t2;

    +--------+-------------+------------------+

    | a      |   length(a) |   CHAR_LENGTH(a) |

    |--------+-------------+------------------|

    | 你好啊 |           6 |                3 |    GBK编码,一个汉字占2个字节,因此这里length(a)是6bytes长度,字节长度为6

    | 111    |           3 |                3 |

    +--------+-------------+------------------+

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档