Gui*_*ido 160 sql oracle unicode varchar
在Oracle中,有什么区别:
CREATE TABLE CLIENT
(
NAME VARCHAR2(11 BYTE),
ID_CLIENT NUMBER
)
Run Code Online (Sandbox Code Playgroud)
和
CREATE TABLE CLIENT
(
NAME VARCHAR2(11 CHAR), -- or even VARCHAR2(11)
ID_CLIENT NUMBER
)
Run Code Online (Sandbox Code Playgroud)
Dav*_*kes 257
我们假设数据库字符集是UTF-8,这是Oracle最新版本中的推荐设置.在这种情况下,某些字符需要超过1个字节才能存储在数据库中.
如果将字段定义为VARCHAR2(11 BYTE)
,则Oracle最多可以使用11个字节进行存储,但实际上您可能无法在字段中存储11个字符,因为其中一些字符需要存储多个字节,例如非英语字符.
通过在VARCHAR2(11 CHAR)
告诉Oracle时定义字段,它可以使用足够的空间来存储11个字符,无论存储每个字符需要多少字节.单个字符最多可能需要4个字节.
Mat*_*olz 21
一个具有11个字节的空间,另一个具有11个字符.诸如Unicode变体之类的一些字符集可能每个字符使用多个字节,因此11字节字段可能具有少于11个字符的空间,具体取决于编码.
另请参见http://www.joelonsoftware.com/articles/Unicode.html
归档时间: |
|
查看次数: |
307150 次 |
最近记录: |