gbn*_*gbn 15
基本上,如何对字符串进行排序和比较。
例子:
比较:
排序:
特殊字符等价
一些 SQL(SQL Server 2008+)
DECLARE @foo TABLE (bar varchar(2))
INSERT @foo VALUES ('z'), ('æ'), ('ø'), ('å'), ('ss'), ('ß'), ('a'), ('ä')
SELECT * FROM @foo ORDER BY bar COLLATE Finnish_Swedish_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Norwegian_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Latin1_General_100_CS_AS --german (western europe) and default
SELECT * FROM @foo ORDER BY bar COLLATE German_PhoneBook_100_CS_AS
Run Code Online (Sandbox Code Playgroud)
“排序规则”可能在 etymology.com 上得到了最好的定义,
\n\n\n\n\n14世纪末,“汇集和比较的行为”
\n
600年来,它没有丝毫改变。“整理”的意思是“汇集在一起”,无论是按时间顺序还是按数据库中的其他方式对一本书进行排序,都是一样的。
\n\n由于它适用于计算机科学,我们正在做的是将存储机制与排序分开。您可能听说过ASCII-betical。那是指基于ASCII字符的二进制编码进行比较。在该系统中,存储和整理是同一回事。如果 ASCII 标准化“编码”发生变化,“排序规则”(顺序)也会发生变化。
\n\nPOSIX 开始用LC_COLLATE
. 但当我们转向 Unicode 时,一个负责标准化排序规则的联盟也出现了:ICU。
在 SQL 规范中有两个扩展来提供排序规则,
\n\nF690
: \xe2\x80\x9c 排序规则支持:
包括collation name
、collation clause
、collation definition
和drop collation
。
F692
:扩展排序规则支持,
包括将不同的默认排序规则附加到架构中的列。
CREATE
本质上,它们提供了排序规则的能力DROP
,为运算符和排序指定它们,并定义列的默认值。
有关 SQL 提供的更多信息,请查看:
\n\n这里不是粘贴一个有限的示例,而是 PostgreSQL 测试套件,它非常广泛。至少查看第一个链接并查找\'T\xc3\xbcrkiye\' COLLATE "tr-x-icu" ILIKE \'%KI%\' AS "false"
collate.icu.utf8.out
collate.linux.utf8.out
collate.out
可能不值得检查,但我将其放在这里是为了完整性,无聊的 POSIX 检查。 归档时间: |
|
查看次数: |
3311 次 |
最近记录: |