Laz*_*zer 5 oracle oracle-11g-r2 varchar
关于这个问题的第 4 点(参考 MS SQL Server):
- VARCHAR 不存储 Unicode 字符。
- NVARCHAR 确实存储 Unicode 字符。
- 今天的应用程序应该始终与 Unicode 兼容。
- NVARCHAR 需要两倍的空间来存储它。
- 第 4 点无关紧要,因为存储空间非常便宜。
Oracle 数据库也是如此吗?
不完全是。Oracle 支持 VARCHAR 的字节语义和字符语义。字符类型默认是字节语义;定义为的列VARCHAR2(10)
可容纳 10 个字节,这可能与 10 个字符不同。新列的默认值由参数 NLS_LENGTH_SEMANTICS 控制。
但在 UTF-8 数据库中,您可以将列定义为VARCHAR2(10 CHAR)
,该列将包含 10 个字符。即使其中 5 个是单字节字符,5 个是多字节字符,所有 10 个字符都可以容纳。
NCHAR 和 NVARCHAR2 始终使用字符语义。一列NVARCHAR(20)
可容纳 20 个字符,但可能需要 60 个字节来容纳所有字符。
NVARCHAR2 限制为 4000 个字节,即 4000 个单字节字符,但多字节字符数仅为 1/3。(假设每个字符最多三个字节。)
磁盘空间比以前便宜得多。但您仍然必须从磁盘中获取数据才能发挥作用。更多字节,更多时间;更多的时间,更多的费用。IME,磁盘空间成本不仅仅对那些不需要付费的人来说才重要。
更多详细信息,请参阅Oracle 数据库概念。
归档时间: |
|
查看次数: |
11704 次 |
最近记录: |