`
sweed0
  • 浏览: 6516 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sql中的 varchar

    博客分类:
  • DB
 
阅读更多

MySQL中varchar最大长度是多少?

http://dinglin.iteye.com/blog/914276

 

存储状况

CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数 。例如,CHAR(30)可以占用30个字符。

  • CHAR_LENGTH(str )

返回值为字符串str 的长度,长度的单位为字符 。一个多字节字符算作一个单字符。对于一个 包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5。

  • CHARACTER_LENGTH(str )

CHARACTER_LENGTH()是CHAR_LENGTH()的同义词。

  • LENGTH(str )

返回值为字符串str 的长度,单位为字节 。一个多字节字符算作多字节。这意味着 对于一个包含5个2字节字符的字符串, LENGTH() 的返回值为 10, 而 CHAR_LENGTH()的返回值则为5。

 

====


SQL中的char、varchar

 

        char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比 如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。因为是固定长度,所以速度效率高。 

        varchar类型:Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"
而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)。

        由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!

        VARCHAR存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。

        Nchar类型和Nvarchar类型是怎么一回事呢?为了与其他多种字符的转换,如中文,音标等,对每个英文(ASCII)字符都占用2个字节,对一个汉字也占用两个字节,所有的字符都占用2个字节。

例如

varchar(n):变长型字符数据类型,存储最长长度为8,000 个字符。

===

SQL 中英文混合时取字符串长度

select len('中英文abc')     ---结果是6

select datalength('中英文abc')       ---结果是9

select cast('中英文abc'   as char(5))    ---结果是“中英”,会自动避免半个汉字出现

select cast('中英文abc'   as char(7))    ---结果是“中英文a”,可有效的截取中英文

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics