只是nvarchar支持多字节字符吗?如果是这样的话,除了存储问题之外,使用varchars真的有什么意义吗?
当前回答
nvarchar将数据存储为Unicode,因此,如果要在数据列中存储多语言数据(多种语言),则需要N变量。
其他回答
varchar:可变长度、非Unicode字符数据。数据库排序规则确定使用哪个代码页存储数据。
nvarchar:可变长度Unicode字符数据。取决于用于比较的数据库排序规则。
掌握了这些知识后,使用与输入数据匹配的数据(ASCII与Unicode)。
由于SQL Server 2019 varchar列支持UTF-8编码。
因此,从现在开始,不同的是规模。
在转换为速度差异的数据库系统中。
更少的数据=更少的IO+更少的内存=通常速度更快。阅读上面的文章了解数字。
从现在开始在UTF8中使用varchar!
只有当您拥有2048-16383和16384-65535范围内的大量字符时,您才需要测量
varchar仅用于非Unicode字符,而nvarchar用于Unicode和非Unicode字符。下面给出了它们之间的一些其他差异。
VARCHAR与NVARCHAR
VARCHAR | NVARCHAR | |
---|---|---|
Character Data Type | Variable-length, non-Unicode characters | Variable-length, both Unicode and non-Unicode characters such as Japanese, Korean, and Chinese. |
Maximum Length | Up to 8,000 characters |
Up to 4,000 characters |
Character Size | Takes up 1 byte per character |
Takes up 2 bytes per Unicode/Non-Unicode character |
Storage Size | Actual Length (in bytes) | 2 times Actual Length (in bytes) |
Usage | Used when data length is variable or variable length columns and if actual data is always way less than capacity | Due to storage only, used only if you need Unicode support such as the Japanese Kanji or Korean Hangul characters. |
我总是使用nvarchar,因为它允许我正在构建的任何东西都能承受我扔给它的几乎所有数据。我的CMS系统使用中文是偶然的,因为我使用了nvarchar。现在,任何新的应用程序都不应该真正关注所需的空间量。
主要是nvarchar存储Unicode字符,varchar存储非Unicode字符。
“Unicodes”是指16位字符编码方案,允许来自许多其他语言(如阿拉伯语、希伯来语、汉语、日语)的字符在单个字符集中编码。
这意味着unicode使用每个字符2个字节来存储,而非unicode使用每字符一个字节来进行存储。这意味着与非unicode相比,unicode需要双倍的存储容量。
推荐文章
- 确定记录是否存在的最快方法
- 从现有模式生成表关系图(SQL Server)
- 我如何循环通过一组记录在SQL Server?
- 数据库和模式的区别
- 如何在SQL Server中一次更改多个列
- 外键约束可能导致循环或多条级联路径?
- 如何选择每一行的列值不是独特的
- nvarchar(max)非文本
- 在SQL Server 2008 R2中重命名数据库时出错
- 将数据复制到另一个表中
- 如何在SQL中选择表的最后一条记录?
- 修改列,添加默认约束
- 在存储过程中使用“SET XACT_ABORT ON”有什么好处?
- 如何检查SQL Server文本列是否为空?
- 如何创建一个SQL Server函数“连接”多行从一个子查询到一个单独的分隔字段?