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

Posted

技术标签:

【中文标题】如何在 C# T-SQL 查询字符串中使用 % 修饰符?【英文标题】:How do you use the % modifier in a C# T-SQL query string? 【发布时间】:2012-08-10 18:58:31 【问题描述】:

我正在尝试用 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 并且是正确的数据类型等。 尝试了上述方法和第二个方法(没有返回结果)我确信我的查询字符串中没有语法错误(额外的分号或缺少“)。

感谢您的宝贵时间!

【问题讨论】:

我强烈推荐使用 SQL 命令的 SQL 参数。它保留了文化的东西。 csharp-station.com/Tutorial/AdoDotNet/lesson06 【参考方案1】:

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

SELECT userName from tblUserInformation WHERE userName LIKE @userNameQuery

@userNameQuery%my query% 类似。

【讨论】:

这行得通,谢谢好心的先生。我将在 6 分钟内标记为正确:D【参考方案2】:

请尝试:

like '%' + @userNameQuery + '%'

【讨论】:

【参考方案3】:

我建议像这样使用它:

    将您的query 写为SELECT userName from tblUserInformation WHERE userName LIKE @userNameQuery

    确保您绑定为参数@userNameQuerystring 包含必要的%,即将其声明为

    var userName = @"%name%";

【讨论】:

以上是关于如何在 C# T-SQL 查询字符串中使用 % 修饰符?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 t-sql (Azure Synapse) 的 CAST/CONVERT 中使用字符串函数

T-SQL:如何将逗号连接到除最终记录之外的所有文本字段

T-SQL基础之简单查询

C# 字符串函数到 T-SQL 标量函数

如何在这个特定的 T-SQL 查询中使用表变量?

将 T-SQL 表值函数字符串拆分为 C#