惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Last Watchdog
The Last Watchdog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Troy Hunt's Blog
L
LINUX DO - 最新话题
C
Check Point Blog
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
S
Security @ Cisco Blogs
IT之家
IT之家
T
The Exploit Database - CXSecurity.com
The GitHub Blog
The GitHub Blog
D
Docker
Engineering at Meta
Engineering at Meta
AWS News Blog
AWS News Blog
S
Security Affairs
U
Unit 42
P
Palo Alto Networks Blog
V
Visual Studio Blog
Y
Y Combinator Blog
D
DataBreaches.Net
Forbes - Security
Forbes - Security
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
Security Latest
Security Latest
aimingoo的专栏
aimingoo的专栏
Simon Willison's Weblog
Simon Willison's Weblog
A
Arctic Wolf
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hacker News: Front Page
博客园 - 司徒正美
博客园 - Franky
宝玉的分享
宝玉的分享
TaoSecurity Blog
TaoSecurity Blog
Latest news
Latest news
Scott Helme
Scott Helme
MongoDB | Blog
MongoDB | Blog
量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
P
Privacy International News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog

博客园 - 杰仔

js收集 - 杰仔 - 博客园 VS 2005 Debugger crashing with IE 8 SQL 收集2 ref与out区别(ref有进有出,而out只出不进) firefox.chrome等兼容性 - 杰仔 - 博客园 js获取控件位置 .net 贬型 list SQL函数收集 Convert和Cast比较 AutoComplete控件(转) 中文转拼音类 Castle在“新.NET时代”将何去何从 (转DotNet频道) Asp.net的ViewState - 杰仔 - 博客园 Silverlight用户控件切换(源码) js元素 - 杰仔 - 博客园 innerHTML与innerText使用 - 杰仔 - 博客园 Silverlight 2应用程序中切换用户控件(转) LINQ体验系列文章导航(转) int +问号使用
Char 和 Varchar 与 nchar 和 nvarchar 最终总结比较
杰仔 · 2008-07-15 · via 博客园 - 杰仔
最近发现自己经常会把这几个字义不时模糊起来,所以自己整理了一下这方面文章。先从MSDN拿出定义出来,理论知识先要看懂
char [ ( n ) ]

固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。char 的 SQL 2003 同义词为 character。

varchar [ ( n | max ) ]

可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节。所输入数据的长度可以为 0 个字符。SQL-2003 中的 varchar 就是 char varying 或 character varying。

nchar [ ( n ) ]

n 个字符的固定长度的 Unicode 字符数据。n 值必须在 1 到 4,000 之间(含)。存储大小为两倍 n 字节。nchar 的 SQL-2003 同义词为 national char 和 national character。

nvarchar [ ( n | max ) ]

可变长度 Unicode 字符数据。n 值在 1 到 4,000 之间(含)。max 指示最大存储大小为 2^31-1 字节。存储大小是所输入字符个数的两倍 + 2 个字节。所输入数据的长度可以为 0 个字符。nvarchar 的 SQL-2003 同义词为 national char varying 和 national character varying。

        大家从以上定义可以看到,char,varchar与nchar,nvarchar只是多了一个N而已,再细看,原来一个是非Unicode流,一个Unicode流。由此我们可以看出,Unicode字符流,无论我们输入字符,数字还是汉字,都是以两个字节存储。而非Unicode字符流却相反,每个英文字符和数字都占一个字节,而一个中文的字符会占两个字节。

以上理解清楚后,我们再来看看char与varchar的区别

        CHAR的长度是固 定的,而VARCHAR的长度是可以变化的, 比如,存储字符串“aaa",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。由于char是以固定长度的,所以它的速度会比 varchar快得多!但程序处理起来要麻烦一点,要用Trim之类的函数把两边的空格去掉!           

        如果列数据项的大小可能相同,请使用 char。如果列数据项的大小可能差异很大,请使用 varchar。同理,nchar与nvarchar的区别也是一样。这里我就不多说了。