将sql非Unicode参数转换为Unicode

将sql非Unicode参数转换为Unicode,sql,unicode,sql-like,nvarchar,Sql,Unicode,Sql Like,Nvarchar,我在数据库的person表中有两条记录,它们的姓氏是“تحید㶈ی”和“موق” 当我使用 select * from Person where Lastname like N'%ی%' 姓氏中包含“ی”字符的记录返回,这正是我需要的,但我需要一些更改。我需要使用%和%之间的单词作为参数。 比如: create procedure usp_GetPersonsWhoseNameContains(@LN nvarchar(50)) as begin select * from Perso

我在数据库的person表中有两条记录,它们的姓氏是“تحید㶈ی”和“موق” 当我使用

select * from Person where Lastname like N'%ی%'
姓氏中包含“ی”字符的记录返回,这正是我需要的,但我需要一些更改。我需要使用
%
%
之间的单词作为参数。
比如:

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

declare @LastName nvarchar(50) = 'ی'
exec usp_GetPersonsWhoseNameContains(@LastName)
但它不是这样工作的,在我的搜索中,我找不到合适的解决方案。有人知道如何尝试吗

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

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

您可能注意到SQL Server在为您生成DDL脚本时对任何带引号的字符串输入都使用了N。

您遇到了什么错误?我的问题是,我想在C#应用程序中使用此存储过程并从中填充参数,而且我无法从C#应用程序中在其后面加N,那我该怎么做呢?你现在是怎么通过的,你能给出代码吗?尝试在代码端的参数前面加上N,就像我在sql.static public List GetPersonContaining(string word){PersonTableAdapter.getPersonwhosenameContains(word);}中所做的那样。我有一个数据集,包含Person表的TableAdapter,并添加了一个查询(使用现有的存储过程)我并没有完全理解您的意思,但有些地方您使用了类似SqlCommand cmd=newsqlcommand(“customorderhist”,conn);//2.设置command对象,使其知道如何执行存储过程cmd.CommandType=CommandType.StoredProcedure;//3.将参数添加到命令,该命令将被传递到存储过程cmd.Parameters.add(new-SqlParameter(“@CustomerID”,custId));这里不是@CustomerID,而是尝试给出N@CustomerID.