【问题标题】:Issue related to Searching Data in SQL Server与在 SQL Server 中搜索数据相关的问题
【发布时间】:2012-10-28 04:22:02
【问题描述】:

我有 SQL 数据表StudetnMaster 有FirstName 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

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

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

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

谢谢

【问题讨论】:

  • 无需添加N。试试select * from StudentNew where FirstName like @FirstName+'%'

标签: c# sql-server sql-server-2005


【解决方案1】:

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

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

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

select * from StudentNew
where FirstName like @FirstName+'%' Collate YourCollationName

【讨论】: