abdul subhan mohammed Ответов: 1

Как добавить префикс N к переменной в хранимой процедуре в SQL server 2016


Дорогие Все,

У меня есть хранимая процедура, где у меня есть переменная, которая будет английской или арабской строкой, для арабской строки Мне нужно добавить префикс N к переменной.

declare @ModuleName nvarchar(max)

set @ModuleName = 'أساسيات الكمبيوتر'

SELECT * FROM Module WHERE  NameEN LIKE N'%' + @ModuleName + '%' OR NameAR LIKE '%' + @ModuleName  + '%'


Что я уже пробовал:

Create function fnGetModuleIDByModuleName
(@ModuleName nvarchar(max))
returns int
begin

declare @ModuleID int

SELECT @ModuleID = ID FROM Module where NameEN like '%' + @ModuleName + '%' or NameAR like '%' + @ModuleName + '%'

return @ModuleID

end


Вызывающая функция
declare @m nvarchar(max) 
set @m = 'أساسيات الكمبيوتر'
select dbo.fnGetModuleIDByModuleName(@m)


если я добавлю префикс N к строке, то он будет работать
declare @m nvarchar(max) 
set @m = N'أساسيات الكمبيوتر'
select dbo.fnGetModuleIDByModuleName(@m)


Я не могу жестко закодировать какую-либо переменную, значение переменной исходит из параметра хранимой процедуры. Итак, мой вопрос заключается в том, как я могу добавить префикс N к переменной@?


Кто-нибудь может пожалуйста помочь мне.

Заранее спасибо

Richard Deeming

Просто добавьте префикс к переменной. В чем проблема?

declare @ModuleName nvarchar(max)

set @ModuleName = N'أساسيات الكمبيوتر'

SELECT * FROM Module WHERE  NameEN LIKE N'%' + @ModuleName + N'%' OR NameAR LIKE N'%' + @ModuleName  + N'%'

1 Ответов

Рейтинг:
2

RickZeeland

Попробуйте переместить % туда, где добавлен параметр.
Смотрите этот вопрос: Как найти значение из базы данных SQL с помощью %[^]

scCommand.Parameters.Add("@ModuleName", SqlDbType.NVarChar, 50).Value = "ساسيات الكمبيوتر";


abdul subhan mohammed

проблема заключается не в"%", а в том, что переменная содержит арабский текст, для которого я должен добавить префикс N к переменной.