我一直在研究在我的代码中使用Unicode'N'常量,例如:
select object_id(N'VW_TABLE_UPDATE_DATA', N'V');
insert into SOME_TABLE (Field1, Field2) values (N'A', N'B');
在阅读了何时使用它之后,我仍然不完全清楚应该和不应该使用它的情况。
当数据类型或参数需要unicode数据类型时(根据上面的示例),它是否像使用它一样简单,或者它是否比它更具有sophiticated?
以下Microsoft站点给出了解释,但我对它正在使用的一些术语有点不清楚 http://msdn.microsoft.com/en-us/library/ms179899.aspx
或者说:
Unicode常量被解释为 Unicode数据,不进行评估 使用代码页。 Unicode常量 有一个整理。这种整理 主要控制比较和 区分大小写。 Unicode常量 被分配默认排序规则 当前的数据库,除非 COLLATE子句用于指定a 排序规则。
这是什么意思:
我意识到这是一个相当广泛的问题,但任何链接或帮助都会受到赞赏。
由于
答案 0 :(得分:1)
Is it as simple as using it when data types or parameters expect a unicode data type
?
非常。
回答你的其他观点:
code page是字符集编码的另一个名称。例如,windows code page 1255编码希伯来语。这通常用于8位字符编码。就您的问题而言,可以使用不同的代码页来评估字符串(因此相同的位模式可以被解释为日语字符或阿拉伯语字符,具体取决于用于评估它的代码页)。
Collation是关于SQL Server如何排序字符串 - 这取决于代码页,因为您将以不同的语言对不同语言的字符串进行排序。有关示例,请参阅this article。
答案 1 :(得分:1)
国家字符nchar()和nvarchar()每个字符使用两个字节并支持国际字符集 - 思考互联网。 N 前缀将字符串常量转换为每个字符两个字节。因此,如果您有来自不同国家/地区的人,并希望正确存储他们的名称,例如:
CREATE TABLE SomeTable (
id int
,FirstName nvarchar(50)
);
然后使用:
INSERT INTO SomeTable
( Id, FirstName )
VALUES ( 1, N'Guðjón' );
和
SELECT *
FROM SomeTable
WHERE FirstName = N'Guðjón';