我正在处理SQL Server 12.0.1800版中的一些语言问题。
我有一个表人员和一个存储过程,根据他们名字上的类似条件返回所有人。名称列的类型为NVARCHAR(50)。
该程序适用于英语,但在使用西里尔字符执行时,我需要在结果中使用N.
不起作用:
exec GET_PERSONS @argName = 'тест'
使用:
exec GET_PERSONS @argName = N'тест'
问题是我在实体框架6的C#客户端中使用此过程。并且没有办法在我知道的参数前放置N,并根据源我不应该如果列是nvarchar的。
调用程序(不返回任何内容):
string name = "тест";
db.SP_GetPersons(name);
步骤:
ALTER PROCEDURE [dbo].[GET_PERSONS]
@argName NVarchar(100)
AS
BEGIN
SELECT
name
FROM
Persons
WHERE
Name like ISNULL(@argName + '%', '%')
or Name like concat('% ', @argName, '%')
END