2013-08-14 4 views
0

У меня есть две записи в моей таблице person в моей базе данных, их имена - «تحصیلداری» и «موقر».
, когда я используюПреобразование sql Параметр Un-Unicode в Unicode

select * from Person where Lastname like N'%ی%' 

запись, содержащая «ی» характер в последние возвращается имя, что именно то, что мне нужно, но мне нужно немного изменить. Мне нужно использовать слово между % и % в качестве параметра.
Что-то вроде:

create procedure usp_GetPersonsWhoseNameContains(@LN nvarchar(50)) 
as 
begin 
    select * from Person where Lastname like N'%'[email protected]+'%' 
end 

declare @LastName nvarchar(50) = 'ی' 
exec usp_GetPersonsWhoseNameContains(@LastName) 

, но он не работает таким образом, и в моих поисках, я не мог найти подходящее решение. Кто-нибудь знает, как

+0

Какая ошибка вы получаете? – Popeye

ответ

1

Попробуйте

create procedure usp_GetPersonsWhoseNameContains(@LN nvarchar(50)) 
as 
begin 
    select * from Person where Lastname like N'%'[email protected]+'%' 
end 

declare @LastName nvarchar(50) = N'ی' 
exec usp_GetPersonsWhoseNameContains(@LastName) 

Может быть, вы заметили, что SQL Server использует N для любого цитируемого строкового ввода при создании сценариев DDL для вас.

+0

Моя проблема заключается в том, что я хочу использовать эту хранимую процедуру в приложении C# и заполнить параметр оттуда, и AFAIK Я не могу поместить N из него в приложение C#, поэтому как мне это сделать? –

+0

как вы передаете его в настоящее время, можете ли вы дать код для этого? Попытайтесь поставить N в стороне кода также перед параметром, поскольку я помещаю здесь в sql. – Popeye

+0

static public List GetPersonContaining (string word) { PersonTableAdapter.GetPersonsWhoseNameContains (word); } –