相关疑难解决方法(0)

varchar和nvarchar SQL Server数据类型之间的主要性能差异是什么?

我正在我的学校使用一个小型网络应用程序的数据库SQL Server 2005.
我在varcharvs 的问题上看到了几个思想流派nvarchar:

  1. 使用varchar除非你处理了很多国际化的数据,然后使用nvarchar.
  2. 只是nvarchar用于一切.

我开始看到视图2的优点.我知道nvarchar确实占用了两倍的空间,但这不一定是一个大问题,因为这只是为几百名学生存储数据.对我而言,似乎最简单的是不要担心它并且只允许一切使用nvarchar.还是有什么我想念的?

sql-server storage varchar nvarchar sql-server-2005

232
推荐指数
10
解决办法
16万
查看次数

NVarchar、Bin 整理、Bin2 整理有什么区别?

所有 3 个选项都区分大小写和重音,并支持 Unicode。根据文档:

  1. NVarchar 根据“相关语言或字母表的字典”对数据进行排序和比较 (?)

  2. Bin 根据“位模式”(?)对数据进行排序和比较

  3. Bin2根据“Unicode数据的Unicode代码点”对数据进行排序和比较(?)

把复杂的事情简单化,我能不能说Bin是NVarchar的改进,Bin2是Bin的改进;除非我仅限于向后兼容,否则总是建议使用 Bin2 或至少使用 Bin 以享受更好的性能?

================================================== ======================== 我会再次尝试解释我自己。

看一看:

If Object_ID('words2','U') Is Not Null Drop Table words2;
Create  Table words2(word1 NVarchar(20),
                    word2 NVarchar(20) Collate Cyrillic_General_BIN,
                    word3 NVarchar(20) Collate Cyrillic_General_BIN2);

Insert
Into    words2
Values  (N'???????',N'???????',N'???????'),
        (N'?????????',N'?????????',N'?????????'),
        (N'?????',N'?????',N'?????'),
        (N'???',N'???',N'???');
Select * From words2;
Run Code Online (Sandbox Code Playgroud)

所有 3 个选项都支持各种字母表,无论是什么排序规则。

问题是 - 3 个选项之间的实际区别是什么?假设我想以不同的字母存储私人姓名,我可以使用哪个选项?我想我将不得不找到特定的名称(选择...从...在哪里...),订单名称(选择...从...订购...)。

sql-server unicode collation

5
推荐指数
2
解决办法
3939
查看次数

NVARCHAR 存储 SQL Server 上 UCS-2 编码不支持的字符

根据 SQL Server 的文档(和遗留文档),nvarchar没有_SC排序规则的字段应该使用UCS-2 ENCODING.

从 SQL Server 2012 (11.x) 开始,当使用支持补充字符 (SC) 的排序规则时,这些数据类型存储完整范围的 Unicode 字符数据并使用 UTF-16 字符编码。如果指定了非 SC 归类,则这些数据类型仅存储 UCS-2 字符编码支持的字符数据子集。

它还指出,UCS-2 ENCODING仅存储 支持的子集字符UCS-2。从维基百科UCS-2 规范

UCS-2 对每个字符使用 0 到 65,535 之间的单个代码值 [...],并且只允许两个字节(一个 16 位字)来表示该值。因此,UCS-2 允许 BMP 中表示字符的每个代码点的二进制表示。UCS-2 不能表示 BMP 之外的代码点。

因此,根据上面的规范,我似乎无法存储像这样的表情符号:其值为0x1F60D(或十进制的 128525,远高于 UCS-2 的 65535 限制)。但是在 SQL Server 2008 R2 或 SQL Server 2019(都带有 default SQL_Latin1_General_CP1_CI_AS COLLATION)上,在一个nvarchar字段上,它被完美地存储和返回(尽管不支持与LIKE或进行比较 …

sql-server unicode encoding ucs2 collation

2
推荐指数
1
解决办法
395
查看次数