2016-03-03 2 views
3

Рассмотрим этот пример: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'%إبراهيم%' 

И выбирает только возвращение إبراهيم но не إِبْرَاهِيمُ. Как я могу заставить его игнорировать эти не-алфавитные символы в поиске? Другими словами, я хочу получить все похожие слова, в том числе с не альфа-символами.

+0

Разве символы акцента не отличаются друг от друга? Значение «م» не совпадает с «م»? – Kramb

+0

Попробуйте использовать SOUNDEX, однако я не уверен, что SQL Server поддерживает арабский язык для этой функции. – FLICKER

+0

Нет, они используются только для обозначения «звука», с которым они разговаривают. Например, 'م' звучит' ma', а 'م' звучит' me'. –

ответ

0

Вы этого не сделаете. Просто. НИЧЕГО о арабском здесь - у вас такая же проблема на английском.

Как я могу заставить его игнорировать эти не-алфавитные символы в поиске?

Как номера? НЕ ЗА ЧТО. Не со стандартным синтаксисом SQL.

Если вы можете, поместите полный текст в поле. И используйте синтаксис полного текста в вашем запросе. Для этого это и есть.

+0

Нет. Меня неправильно поняли. Я имею в виду «не алфавитные символы», такие как 'ض' и' ض' и 'ض'. Как вы видите, используется один и тот же алфавитный символ, с некоторой задней меткой, указывающей, как звучать персонаж, без изменения самого символа. –

0

В sql stackexchange имеется сквозной поток, который имеет обходной путь для этой проблемы. https://dba.stackexchange.com/questions/14153/treating-certain-arabic-characters-as-identical

+0

Спасибо, но это другое. Ваша ссылка рассказывает, как искать «похожие символы». Пример 'أ',' ا', 'ء',' ؤ'. Все эти произнесенные 'Aa'. Я говорю о' ض', 'ض',' ض' (которые произносятся 'dha',' dhe', 'dho'). –

0

К сожалению, арабский язык не чувствителен к регистру, и, конечно, оба оператора select возвратят 'إبراهيم', потому что им было приказано это сделать.

Это проблема, с которой мы очень долго страдаем, люди всегда ищут «احمد», когда написано «أحمد», и они не найдут его.

+0

Я думаю, на вашу проблему ответил Kramb ответ –