3

我有 SQL 数据表 StudetnMasterFirstName nvarchar(100)并包含数据输入古吉拉特语(Unicode 字符)

样本:

   StudentId   FirstName
     1           ઘનશ્યામ
     2           જીગર   

现在我有以下搜索查询:

Select * 
from StudetnMaster 
where FirstName like N'" + textBox1.Text.Trim() + "%' 

它工作正常,但在存储过程中我必须传递参数FirstName如下:

ALTER PROCEDURE dbo.StoredProcedure1
        @FirstName nvarchar(100)
AS
    select * 
    from StudentNew 
    where FirstName like N@FirstName+'%' 

但它抛出一个错误说:

无效的列名 N@FirstName

我如何'N' 在 SP 中使用参数,因为不使用N'Unicode 文本是不可搜索的?

对于上面提到的内联查询我得到了结果,但是对于存储过程我得到了错误,那么我们如何'N'在 SP 中使用呢?

在 SP 中搜索 unicode 字符还有其他解决方案吗?

谢谢

4

1 回答 1

1

就像在评论中写的一样-您不必将 N 添加到参数中。

当您将参数定义为 nvarchar 时,这意味着每个符号 2 个字节(当您编写 N'string' 时,N 代表什么)。

如果有必要,您可以在此处添加排序规则:

select * from StudentNew
where FirstName like @FirstName+'%' Collate YourCollationName
于 2012-10-31T12:16:04.220 回答