和,CHAR (CHARACTER)以及VARCHAR (CHARACTER VARYING),SQL提供NCHAR (NATIONAL CHARACTER)和NVARCHAR (NATIONAL CHARACTER VARYING)类型.在某些数据库中,这是用于字符(非二进制)字符串的更好的数据类型:
在SQL Server中,NCHAR存储为UTF-16LE,是唯一可靠地存储非ASCII字符的方法,仅CHAR作为单字节代码页;
在Oracle中,NVARCHAR可以存储为UTF-16或UTF-8而不是单字节排序规则;
但在MySQL,NVARCHAR是VARCHAR,所以它没有什么区别,任一类型的可以存储使用UTF-8或任何其他排序规则.
那么,NATIONAL实际上在概念上意味着什么呢?供应商的文档仅告诉您自己的DBMS使用哪些字符集,而不是实际的基本原理.与此同时,SQL92标准对该功能的解释更为有帮助,仅说明NATIONAL CHARACTER存储在实现定义的字符集中.而不是仅仅CHARACTER存储在实现定义的字符集中.这可能是一个不同的实现定义的字符集.或不.
谢谢,ANSI.Thansi.
是否应该NVARCHAR用于所有字符(非二进制)存储目的?是否有当前流行的DBMS,它会做一些不受欢迎的事情,或者只是不识别关键字(或N''文字)?
像:
插入表(col)值(N'multilingual unicode strings')
我正在使用SQL Server 2008,我已经使用nVarChar作为列数据类型.