Sql 区分假名类型和区分全半角的KS是什么意思

Sql 区分假名类型和区分全半角的KS是什么意思,sql,Sql,创建新数据库时,我必须设置排序规则类型或设置其默认值……很好 但实际上我需要知道区分假名类型(KS)和区分全半角意味着什么,我知道,例如,区分大小写意味着字母对大写和小写都很敏感,那么区分假名类型和区分全半角呢???两者都与排序有关,通常您不会选择这两个选项。以下是库里斯蒂对微软的描述 假名类型敏感 区分两种类型的日语假名字符: 平假名和片假名 如果未选择此选项,SQL Server将考虑平假名和 片假名字符在排序时应相等 宽度敏感 区分单字节字符和同一字符 当表示为双字节字符时 如果未选择此选

创建新数据库时,我必须设置排序规则类型或设置其默认值……很好


但实际上我需要知道区分假名类型(KS)和区分全半角意味着什么,我知道,例如,区分大小写意味着字母对大写和小写都很敏感,那么区分假名类型和区分全半角呢???

两者都与排序有关,通常您不会选择这两个选项。以下是库里斯蒂对微软的描述

假名类型敏感

区分两种类型的日语假名字符: 平假名和片假名

如果未选择此选项,SQL Server将考虑平假名和 片假名字符在排序时应相等

宽度敏感

区分单字节字符和同一字符 当表示为双字节字符时

如果未选择此选项,SQL Server将考虑单个字节 相同字符的双字节表示形式相同 用于分类目的

TL;医生: 假名类型不敏感使日文文本排序更加直观,除非您有理由不这样做,否则通常应始终启用该选项


完整解释: 一般来说,如果要存储任何需要排序的日语文本,可能需要使用不区分假名类型的方法。你为什么要这样?因为它使排序在日语方面更加直观

在英语中,因为我们只有一个书写系统,所以很容易按算法排序。我们只需按字符代码(已经按字母顺序)对字符进行排序,就完成了。不过,在日语中,因为有多种方法可以写出相同的发音,所以排序可能会有点棘手。平假名和片假名字母表被分成单独的Unicode块,因此当我们尝试使用“假名类型敏感度”进行排序时,结果并不完全直观

假设您有一个要排序的名称列表:

{”ピカチュウ","さとし","マリオ","まちだ","はるか" }

与该列表对应的罗马字母为:

{“Pikachu”、“Satoshi”、“Mario”、“Machida”、“Haruka”}

当对假名类型敏感进行排序时,将得到以下结果:

{”さとし","はるか","まちだ","ピカチュウ","マリオ“}

{“Satoshi”、“Haruka”、“Machida”、“Pikachu”、“Mario”}

如果不区分假名类型进行排序,则会得到以下结果:

{”さとし","はるか","ピカチュウ","まちだ","マリオ“}

{“Satoshi”、“Haruka”、“Pikachu”、“Machida”、“Mario”}

对于说日语的人来说,第二种排序更直观,因为结果实际上是按语音排序的,而不是基于字符集。”まちだ“和”マリオ“两者都以相同的语音开头,但由于其中一个使用平假名“ma”,另一个使用片假名“ma”,因此启用假名类型敏感度时,它们会分开。使用假名类型不敏感度,列表可以正确排序,以便两个单词在列表上相邻显示,尽管它们的书写系统不同

英语的一个很好的类比是区分大小写。想象一下,如果你想为一本词典的单词列表排序,其中一些是专有名词,而另一些不是:

{“纽约”、“纽约”、“喷气机”、“日本”、“蠕动”、“SQL”}

如果我们忽略大写和小写字母代表同一个字母的事实,只根据字符代码进行排序,我们会得到如下结果:

{“日本”、“纽约”、“SQL”、“喷气机”、“纽约”、“蠕动”}

这样分类的词典几乎没有用处,尤其是如果我们想在不知道单词是以大写字母还是小写字母开头的情况下查找单词。我们必须先用所有专有名词检查词典的第一部分,然后再用所有其他单词检查最后一部分

如果我们运行不区分大小写的排序,将“a”和“a”视为同一个字母,尽管有单独的字符代码。我们将得到更直观的结果:

{“日本”、“喷气机”、“纽约”、“纽约”、“蠕动”、“SQL”}

因此,一般来说,除非您有特定的理由不这样做,否则您应该始终禁用假名类型敏感。电话簿查找将是假名类型敏感的。请注意,在日语中,还有一种额外的字符类型,即汉字,您也需要使用。汉字更难排序,因为几乎总是有多种方式来读取ea汉字和没有真正的“字母顺序”"按汉字顺序排列。大多数面向日本人的表单通常有两个名称字段:通常写出来的用户名和完全用片假名写出来的用户名。这不仅让人们知道如何正确发音仅用汉字写的可能模棱两可的名称,还允许软件进行排序通过明确的片假名字段,使排序假名类型不敏感

要了解更多信息,我绝对建议您阅读这篇优秀的文章,这篇文章用日语解释了排序的问题,比我所能做的要好得多


参考资料:

如果假名类型仅适用于日语,为什么其他语言(如波斯语或阿拉伯语)上也可以使用它?@Hossein:德语或法语也可以使用它。这与以下事实有关:在任何类型的典型西方通讯簿中,您都可以使用一些日语名称。SQL Server需要知道如何根据特定的名称对它们进行排序ed language。@侯赛因:谢谢,但是,对于西方语言来说,这听起来可能是合乎逻辑的,但对于从右到左的中东语言,比如阿拉伯语和波斯语(波斯语)呢?不可能,日语字符(更不用说单词!)出现在这些特定语言的地址簿中!@Rika我听到过同样的观点,认为日语(或阿拉伯语)是正确的在英语语言应用中,但我不买