Sql LIKE用阿拉伯语?

时间:2016-03-03 17:23:34

标签: sql sql-server sql-like

考虑这个样本:

CREATE TABLE #tempTable
(name nvarchar(MAX))

INSERT INTO #tempTable VALUES (N'إِبْرَاهِيمُ'), (N'إبراهيم')

SELECT * FROM #tempTable WHERE name = N'إبراهيم'
SELECT * FROM #tempTable WHERE name LIKE N'%إبراهيم%'

两者都选择仅返回إبراهيم而不是إِبْرَاهِيمُ。如何让它忽略搜索中的这些非字母字符?换句话说,我希望得到所有类似的单词,包括那些带有非字母字符的单词。

4 个答案:

答案 0 :(得分:0)

你没有这样做。简单。在这里没有关于阿拉伯语的问题 - 你在英语中遇到同样的问题。

  

如何在搜索中忽略这些非字母字符?

喜欢数字吗?一点也不。不是“标准SQL语法”。

如果可以,请在字段上添加全文索引。并在查询中使用全文搜索语法。这就是它的用途。

答案 1 :(得分:0)

在sql stackexchange上有一个线程,它有针对此问题的解决方法。 mailing list thread

答案 2 :(得分:0)

不幸的是,没有区分大小写的阿拉伯语,当然,两个select语句都会返回'إبراهيم',因为他们被命令这样做。

这是我们长期遭受的一个问题,人们总是在写'ححمد'时会寻找'احمد'并且他们找不到它。

答案 3 :(得分:0)

这是一个 100% 的解决方案:

$yourChaine = \Transliterator::create('NFC; [:Nonspacing Mark:] Remove; NFC')
                                ->transliterate($yourChaine);