大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
VARCHAR是MySQL中常用的数据类型,但其单位究竟是字符还是字节呢?
纳雍网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联成立于2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
经过查阅,MySQL的 官方文档 给出了答案:
4.1及之后的版本,VARCHAR的单位是字符;4.1之前的版本,VARCHAR的单位是字节。(As of version 4.1 , MySQL interprets length specifications in character column definitions in character units . (Before MySQL 4.1, column lengths were interpreted in bytes .) This applies to CHAR, VARCHAR and the TEXT types.)
同时官方文档也提到,4.1及之后的版本以UTF-8作为预定义字符集。(VARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the standard SQL way to define that a VARCHAR column should use some predefined character set. MySQL 4.1 and up uses UTF8 as this predefined character set .)
在 Go 语言中,是不能用 len 函数来统计字符串中的字符个数的,这是因为在 Go 中,字符串是以 UTF-8 为格式进行存储的,在字符串上调用 len 函数,取得的是字符串包含的 byte 的个数。
那么如何在Go语言中获取字符串中的字符个数呢?有下面几种方法:
测试发现速度最快的是 utf8.RuneCountInString()
可以写个触发器来进行修改。在对表插入数据的时候触发器自动对插入字段内容进行修改,把10修改为10m。
"定义varchar类型的字段,长度设置为10,"由于是非unicode字符串类型,1字节=8位,所以最多输入10个英文或5个汉字.
若"你定义nvarchar类型的字段,长度设置为10,"那么属于unicode字符串类型,1字节=16位,所以最多输入10个英文或10个汉字.