代码之家  ›  专栏  ›  技术社区  ›  bobince

SQL national character(NCHAR)数据类型真正用于什么?

  •  49
  • bobince  · 技术社区  · 14 年前

    以及 CHAR (CHARACTER) VARCHAR (CHARACTER VARYING) ,SQL提供了 NCHAR (NATIONAL CHARACTER) NVARCHAR (NATIONAL CHARACTER VARYING)

    • 在SQL Server中, 恩查尔 存储为UTF-16LE,是可靠存储非ASCII字符的唯一方法, 仅为单字节代码页;

    • NVARCHAR 可以存储为UTF-16或UTF-8,而不是单字节排序规则;

    • 但在MySQL中, NVARCHAR 瓦尔查尔

    那么,这是什么 NATIONAL NATIONAL CHARACTER CHARACTER ,存储在实现定义的字符集中。这可能是不同的实现定义的字符集。或者不是。

    谢谢,ANSI。坦西。

    一个人应该使用吗 NVARCHAR 用于所有字符(非二进制)存储目的?目前有没有流行的DBMS,它会做一些不受欢迎的事情,或者只是不识别关键字(或 N'' 文字)?

    3 回复  |  直到 13 年前
        1
  •  15
  •   Joel Coehoorn    14 年前

    在本例中,“NATIONAL”是指特定于不同国籍的字符。远东语言的字符特别多,以至于一个字节的空间不足以区分所有字符。所以,如果你有一个只有英语(ascii)的应用程序 或者是一个只有英语的领域 ,您可以使用较旧的CHAR和VARCHAR类型,它们只允许每个字符有一个字节。

    在我看来,旧的CHAR/VARCHAR类型仍然是首选的唯一地方,是在支持区别的Sql Server等平台上,仅用于频繁引用的ascii内部代码和数据,这些数据相当于 enum

        2
  •  5
  •   dan04    3 年前

    同时,SQL92标准解释了 仅说明该国民性 字符集。而不是仅仅 字符,该字符存储在 实现定义的字符集。 这可能是另一种情况 或者不是。

    巧合的是,这是C++标准之间的“区别”。 char wchar_t . 当每种语言/操作系统组合都有自己的字符集时,字符编码的黑暗时代的遗迹。

    一个人应该为所有人使用NVARCHAR吗 字符(非二进制)存储器

    列的声明类型是否正确并不重要 VARCHAR NVARCHAR 统一码 (无论是UTF-8、UTF-16还是UTF-32)用于所有字符存储目的。

    目前有流行的数据库管理系统吗

    NCHAR 使您的(英文)数据占用两倍的空间。 不幸的是,UTF-8还不受支持。

    编辑 introduced UTF-8 support

        3
  •  3
  •   Gary Myers    14 年前

    在Oracle中,数据库字符集可以是多字节字符集,因此您可以在其中存储所有类型的字符……但您需要理解并适当定义列的长度(以字节或字符为单位)。

    here .

    推荐文章