【问题标题】:Parameterized SQL Query error参数化 SQL 查询错误
【发布时间】:2009-03-26 19:52:25
【问题描述】:

我有一个构建动态参数化 SQL 查询的应用程序。以下查询返回“在“=”或附近出现语法错误的内部异常...

我认为这是我将参数分配给列名的方式,但我不确定。代码如下。

SELECT TOP 50 77 AS Repository, DocID, LastFileDate, ImageCount,
 LockedUserID,   DocClass, Offline, FileType, OrigFileName, C_CredCardSSN, C_CredCardName,C_CredCardDocType, C_CredCardDocDate, C_CredCardStatus 

FROM D77 

WHERE C_CredCardSSN 

LIKE C_CredCardSSN = @sp1% 

ORDER BY C_CredCardSSN,C_CredCardName

编辑:感谢大家。所有这些答案都有帮助。 =)

【问题讨论】:

    标签: asp.net sql parameterized


    【解决方案1】:

    试试吧

    WHERE C_CredCardSSN LIKE @sp1
    

    WHERE C_CredCardSSN LIKE @sp1+'%'
    

    取决于你为什么在那里有一个“%”(感谢 Joel Coehoorn 指出我错过的“%”的评论)。

    或者(回应您的评论)也许:

    WHERE C_CredCardSSN LIKE ''+@sp1
    

    【讨论】:

    • 此处仅修复了 2 个问题中的 1 个
    • 我遇到的问题是它现在会返回一个错误,提示我必须声明一个标量变量 \"@sp1"\。这是我开始的地方,并添加了“C_CredCardSSN = @sp1”来修复。如果有帮助,这一切都在字符串构建器中构建,然后将命令文本传递给 SqlCommand 对象
    【解决方案2】:

    LIKE 语句应如下所示:

    WHERE C_CredCardSSN LIKE @sp1 + '%'
    

    【讨论】:

      【解决方案3】:

      试试这个:

      WHERE C_CredCardSSN like @sp1 + '%'
      

      如果前几个字符正确,这只会找到您的 C_CredCardSSN。要找到该值内的任何内容,请尝试这样

      WHERE C_CredCardSSN like '%' + @sp1 + '%'
      

      【讨论】:

        【解决方案4】:

        尝试将“%”添加到文本中,然后将其作为参数添加到查询中:

        SqlParameter p = new SqlParameter("@sp1");
        p.value = C_CredCardSSNText + "%";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-09
          • 1970-01-01
          • 1970-01-01
          • 2015-05-25
          相关资源
          最近更新 更多