所有 3 个选项都区分大小写和重音,并支持 Unicode。根据文档:
NVarchar 根据“相关语言或字母表的字典”对数据进行排序和比较 (?)
Bin 根据“位模式”(?)对数据进行排序和比较
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 个选项之间的实际区别是什么?假设我想以不同的字母存储私人姓名,我可以使用哪个选项?我想我将不得不找到特定的名称(选择...从...在哪里...),订单名称(选择...从...订购...)。
A=[2,3,5,7,11,13]
print(A.index(5))
Run Code Online (Sandbox Code Playgroud)
答案是2,但我需要的是第一个大于4的答案(答案是相同的 - 2).我可以应用while循环,但是有更优雅或内置的方法吗?在我的问题中,列表按升序排序(无重复),我的目标是将其拆分为两个列表:低于或等于4,大于4; 并且如果列表被排序,则扫描它两次(甚至一次)将是多余的.