Ответ 1
Попробуйте добавить N перед текстом, например.
select * from table_name
where name=N'arabic_text'
У меня есть база данных SQL Server 2005, в которой у меня есть несколько таблиц, содержащих арабский текст. Тип данных для этих полей NVARCHAR(n)
.
Арабский текст внутри таблицы отображается правильно, и при выборе они отображаются правильно.
Проблема заключается в том, что поиск арабского текста приводит к 0 строкам.
select * from table_name
where name='arabic_text'
Это не возвращает строки, где есть имя с этим значением.
Можете ли вы рассказать мне, как написать запрос?
Попробуйте добавить N перед текстом, например.
select * from table_name
where name=N'arabic_text'
выберите * из table_name где здесь будет работать имя N '% arabic_text%'
Если вы ищете слово احمد и в ваших записях есть أحمد, ваш запрос ничего не даст, даже если вы используете "% احمد%". Лучше использовать полнотекстовый поиск.
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 )