如何在C#T-SQL查询字符串中使用%修饰符?

时间:2012-08-10 18:58:32

标签: c# sql-server modifier

我正在尝试用C#编写基本查询,其中包括使用'%'修饰符。

这是我的问题:

SELECT userName 
FROM tblUserInformation 
WHERE userName LIKE %@userNameQuery%

当我运行时,我得到一个SQL异常说

  

@userNameQuery附近存在语法错误。

之前我遇到过与SQL查询和C#sql查询字符串的类似差异,但我不确定如何解决这个问题。我试过了:

SELECT userID 
FROM tblUserInformation 
WHERE userName LIKE '%'@userNameQuery'%'

下面的一个不会抛出异常但不返回任何结果。它应该是因为我可以直接对数据库运行相同的查询,并返回许多结果。

SELECT userName 
FROM tblUserInformation 
WHERE userName LIKE '%@userNameQuery%'

我这样做是否正确?

此外,@userNameQuery已正确填写SqlParameter,并且是正确的数据类型等。 尝试了上面的两个和第二个工作(没有返回结果)我确信我的查询字符串中没有语法错误(额外的分号或缺少“)。

感谢您的时间!

3 个答案:

答案 0 :(得分:5)

您需要在参数的值中传入%,而不是在查询本身中传递它。

SELECT userName from tblUserInformation WHERE userName LIKE @userNameQuery

@userNameQuery的位置%my query%

答案 1 :(得分:3)

请尝试:

like '%' + @userNameQuery + '%'

答案 2 :(得分:1)

我建议像这样使用它:

  1. query写为SELECT userName from tblUserInformation WHERE userName LIKE @userNameQuery
  2. 确保您绑定的string作为参数@userNameQuery包含必要的%,即将其声明为

    var userName = @"%name%";