varchar and nvarchar and varchar(max) and nvarchar(max) and text and ntext
来源:互联网 发布:java 分布式应用 编辑:程序博客网 时间:2024/05/22 06:54
题目有点儿长,本来还想加上char和nchar,感觉都乱套了,就没有加。
想到这个话题,是因为今天在设计sqlserver数据库的时候,忽然卡在这里很久,这么多种有关字符串的类型,到底要选择哪一种呢?特别是升级到2005之后,又多了一种max来搅局,更让人有些无所适从。
在讨论正式话题之前,还是先说说天气吧,因为这几天实在是太冷了。虽然对于北方的朋友来说这实在算不了什么,但冷其实是一种相对的感觉。0下10度相对于20度是冷,10度相对于30度也是冷,如果0下10度再往下,可能也就麻木了,反正就是那种感觉了。回忆起小时候取暖的方法,不知道大家经历过没有。一是斗鸡,就是单脚着地,抱着另一只脚,分班互相攻击,双脚落地即输,斗一身汗再去上课,就不会冷了。二是“挤窝窝”,一堆人挤在墙角,互相取暖。三是烧煤炉,每个班分点煤,然后找些黄泥,和成煤饼晒干,每天早上把炉子生起来,虽然炉火很小,但整个教室依然暖洋洋的感觉,一下课大家都会跑到炉子旁边,让自己更暖和一些。
回忆一下感觉温暖了不少,搓搓冰冷的双手继续这个话题。
有时候偷懒,只要是字符型的都用varchar类型,然后指定一个足够的长度就行了。感觉这样一般也没啥问题,但对于一个严谨的程序员来说可能就不应该了,有些事情还是要认真一些,哪怕只是提高一点点性能,也应该往这方面努力。因为任何一个小小的疏忽,可能在某个条件下就变成了大大的麻烦。这里虽然看起来很乱,但只要稍微理一下,就很清楚了,下面我就来简单做个梳理。
先来看char和nchar,这分别用于非Unicode字串和Unicode字符数据,定长的。如果你的数据长度已知是固定的,可以采用这个类型,如果字母或数字或它们的组合,如学号001,产品代码A001,就用char,如果是中文的,如性别男或女,就可用nchar。
再来看看varchar和nvarchar,这个是变长的,也就是说指定的长度只是一个最大值,字串长度小于这个值都是可以的。比如身份证号,一般是18位数字,也有些老的没改过来的是15位数字,这个字段类型可用varchar(18),如果是用来博客文章的标题,可能是中文的也可能有英文,这咋弄呢?这种情况定义成varchar和nvarchar都成,长度可以适当放宽一点,但在输入校验的时候要注意一些,因为对于varchar来说,中文这种双字节也是可以保存的,但是做为两个字节的,而nvarchar,无论中文和数字都占两个字节的。如果中文为主,那就干脆用nvarchar算了。
对于varchar(max)和nvarchar(max),原来还以为只是对varchar和nvarchar的扩展,后来才发现不仅如此,更是用来替换text和ntext的。在2005以前的版本中,对于长文本比如文章的正文,当然要选择text或ntext了,一般都选ntext吧。升级到2005后,微软可能更推荐你选用varchar(max)或nvarchar(max),因为这样可以利用varchar类型的所有好处,如游标、字符串函数等,具体可以查询联机文档。对于我们来说,一般还是选择nvarchar(max)吧,比如统计字数的时候,也能更准确一些。
手脚有些麻木,造成大脑可能也有些麻木,等天暖和了再说吧。
******
- varchar and nvarchar and varchar(max) and nvarchar(max) and text and ntext
- SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的区别
- SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的区别
- SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的区别
- SQL Table Design - NVARCHAR(Max) and NVARCHAR(n)
- arcsde9.2中text的存储类型问题(unicode,varchar and nvarchar)
- sql server varchar and text
- char、varchar、text和nchar、nvarchar、ntext
- char、varchar、text和nchar、nvarchar、ntext
- The difference of the type of DB type property such char,varchar,nchar and nvarchar
- char and varchar
- char and varchar
- 数据库char and varchar
- SQL Server 2005 'Text,nText,image'数据类型被varchar(max)、nvarchar(max) 和 varbinary(max) 替代(转载自http://www.cnblogs.com/sunrack/articles
- varchar(max)、nvarchar(max)和varbinary(max)数据类型
- sql server - varchar(max), NVARCHAR(MAX), VARBINARY(MAX) (zz)
- 了解SQLServer中varchar(max)、nvarchar(max)和varbinary(max)
- 了解SQLServer中varchar(max)、nvarchar(max)和varbinary(max)
- RegQueryValueEx详解
- 网址导航站的盈利新模式探讨
- November 17th Monday
- 怎样对SQL Server 2005加密的存储过程进行解密
- unix简史
- varchar and nvarchar and varchar(max) and nvarchar(max) and text and ntext
- Lucene的平行索引
- 为摩卡软件用法律武器维权叫好
- Windows7的OEM激活前提---判断主板BIOS是否为SLIC2.1?
- firefox 插件之旅(一)
- 第一个文章
- test
- 看电视你桌面上有几个遥控器 -- facade模式读后感
- ASP.NET 2.0 实现伪静态网页方法