Проблема с согласованием WHERE на арабской строке

У меня есть база данных SQL Server 2005, в которой у меня есть несколько таблиц, содержащих арабский текст. Тип данных для этих полей NVARCHAR(n).

Арабский текст внутри таблицы отображается правильно, и при выборе они отображаются правильно.

Проблема заключается в том, что поиск арабского текста приводит к 0 строкам.

select * from table_name
where name='arabic_text'

Это не возвращает строки, где есть имя с этим значением.

Можете ли вы рассказать мне, как написать запрос?

Ответы

Ответ 1

Попробуйте добавить N перед текстом, например.

select * from table_name
where name=N'arabic_text'

Ответ 2

выберите * из table_name где здесь будет работать имя N '% arabic_text%'

Ответ 3

Если вы ищете слово احمد и в ваших записях есть أحمد, ваш запрос ничего не даст, даже если вы используете "% احمد%". Лучше использовать полнотекстовый поиск.

DECLARE @SearchWord nvarchar(100)
SET @SearchWord = 'احمد'

DECLARE @SearchString nvarchar(100)
SET @SearchString = 'FormsOf(INFLECTIONAL, "' + @SearchWord + '")' 
--SET @SearchString =  @SearchWord 

SELECT Ar.[SuraID]
      ,Ar.[VerseID]
      ,Ar.[AyahText] as Arabic
      ,En.[AyahText] as English
  FROM [QuranDb].[dbo].[ArabicQuran] Ar
  join EnglishQuran En on En.ID=Ar.ID
  where   CONTAINS(ar.AyahText, @SearchString) 
 or  CONTAINS(En.AyahText, @SearchString )