【问题标题】:SQL Like statement not return a wildcard output asp.net c#SQL Like语句不返回通配符输出asp.net c#
【发布时间】:2012-06-20 16:44:51
【问题描述】:

我有这些 sql 语句来根据用户输入输出作业字段。

    SELECT jf.name, j.jname, c.cname, cj.url
    FROM company_has_job cj
        INNER JOIN job j ON j.id = cj.job_id
        INNER JOIN company c ON c.id = cj.company_id
        INNER JOIN jobfield_has_job jhj ON jhj.job_id = j.id
        INNER JOIN jobfield jf ON jf.id = jhj.jobfield_id
    WHERE jf.name LIKE '%' + @InputJob + '%'

例如当用户输入查询“Programmer”时,系统将输出数据库中定义的所有程序员工作。但是如果我输入“Program”,系统不会显示任何结果强>”在搜索框中。这是我的控制参数:

<SelectParameters>
    <asp:ControlParameter ControlID="TextBox4" Name="InputExpertise" 
        PropertyName="Text"/>
</SelectParameters>

你能告诉我哪里做错了吗?非常感谢您的帮助。

【问题讨论】:

  • @InputJob 的类型是什么 - 是 Char、VarChar、nVarChar?
  • 啊。如果是char,可能是空格问题,但如果不是,那么我没有答案,抱歉。

标签: c# asp.net sql


【解决方案1】:

我不确定这是否只是一个错字,但不应该是这样

WHERE jf.name LIKE '''%' + @InputJob + '%'''

请注意,我这样做是为了让代码以 LIKE '%Program%' 结尾,而目前看起来它最终将以 LIKE %Program% 结尾。

【讨论】:

  • 我检查过,但代码中没有错字。无论如何感谢您的建议
【解决方案2】:

还不能发表评论,但也许这会回答这个问题,您加入的任何列是否允许 NULL?内连接不会返回包含空值的结果。

考虑这个查询:

select wb.employee,wb.Dept from web_user wb
inner join Employee e on wb.Dept = e.Department
where wb.employee like '%Ted%'

没有结果

但是这个:

select wb.employee,wb.Dept from web_user wb
left join Employee e on wb.Dept = e.Department
where wb.employee like '%Ted%'

返回: 泰德空

调试也很有帮助,在实际调用数据库时设置断点以获取它正在使用的 SQL 语句,然后将其粘贴到查询编辑器中。当查询不正常时,我已经多次这样做了。一旦您知道程序对 SQL 语句使用什么,这也可以帮助您找到问题。

【讨论】:

    猜你喜欢
    • 2023-02-25
    • 2019-01-07
    • 2021-05-24
    • 2012-11-14
    • 2015-02-18
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    相关资源
    最近更新 更多