考虑这个样本:
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'%إبراهيم%'
两者都选择仅返回إبراهيم
而不是إِبْرَاهِيمُ
。如何让它忽略搜索中的这些非字母字符?换句话说,我希望得到所有类似的单词,包括那些带有非字母字符的单词。
答案 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);