阿拉伯名字查询 returns 多于一个结果

Arabic name query returns more then one results

我在使用特定的阿拉伯语名称进行简单的 select 查询时遇到这样的情况,例如下面的“رفع٩”查询 returns 不止一个结果。它是正确的 returns“روع٩”,但它也是 returns“رفعت”。

SELECT * FROM Table where ArabicName = N'رفعة'

另外两种情况我也遇到过。当使用“حيا٩”查询时,它 returns “حياة” 和 “حيات”。 当用“نعمstra”查询时,它 returns “نعمstra” 和 “نعمت”.

我在网上搜索了答案,但没有成功。

有没有人遇到过这种情况?

我通过在查询中添加以下内容解决了这个问题:COLLATE Arabic_100_CI_AS

SELECT * FROM Table where ArabicName COLLATE Arabic_100_CI_AS = N'رفعة'

注意!如果不在归类规范中指定 _100_,它就无法工作。

您的问题与排序规则有关,您应该了解这意味着什么,尤其是排序规则中的最后几个字母 Arabic_100_CI_AS

CI 表示不区分大小写,您也可以选择设置 CS 表示区分大小写

AS 表示区分重音,与选项 AI 相同,表示不区分重音

好吧,这个排序规则可以在服务器、数据库、列级别上设置,或者您可以在语句末尾添加 COLLATE 命令进行显式搜索。