Sql Server整理

Aks*_*y J 8 sql sql-server collation

我正在阅读的那本书说明了这一点

SQL Server支持两种字符数据类型 - 常规和Unicode.常规数据类型包括CHAR和VARCHAR,Unicode数据类型包括NCHAR和NVARCHAR.不同之处在于常规字符为每个字符使用一个字节的存储空间,而Unicode字符每个字符需要两个字节.每个字符有一个字节的存储空间,选择列的常规字符类型会限制除了英语之外只有一种语言,因为只有256(2 ^ 8)个不同的字符可以用单个字节表示.

我所知道的是,如果我使用Varchar,那么我只能使用一种语言(例如印地语,印度语)和英语.
但是当我跑这个

Create Table NameTable
(
    NameColumn varchar(MAX) COLLATE Indic_General_90_CI_AS_KS
)
Run Code Online (Sandbox Code Playgroud)

它显示错误"只有Unicode数据类型支持Collat​​ion'Indra_General_90_CI_AS_KS',不能应用于char,varchar或text数据类型."

那么我在哪里误解了作者呢?
谢谢

Has*_*yed 3

您可以在此处找到排序规则列表以及编码类型


某些排序规则仅适用于 1 字节编码——127 位用于普通 ASCII,128 位可用于其他字符——印地语可能不适合 128 个字符,因此 1 字节排序规则不适用于它。

您必须使用 nvarchar (或其他带有“n”前缀的字符类型)。

- 编辑 -

French_CI_AS 作为非英语示例

排序规则所实现的功能之一是特定于语言和区域设置的字符排序。因此法语!=拉丁语。

另一个例子arabic_CI_AS

这是使用阿拉伯字母的 1 字节编码。