【问题标题】:where condition is not recognizing my full String条件无法识别我的完整字符串
【发布时间】:2015-11-18 08:39:31
【问题描述】:

我在我的项目中使用 spring 和 hibernate。这是我的查询。当我执行这个查询时,我正在从数据库中获取数据。但是,如果我像这样构建查询,我会得到 0 条记录。

String fullname1 = "this is my String";
select name,gender from account where fullname='fullname1';

如果我创建这样的查询,我正在获取数据。但是fullname1不是静态数据。

select name,gender from account where fullname like '%this%';

问题是如果我的 fullname1 只有一个单词,那么我得到的数据是正确的。如果它有多个单词,我将无法获取数据。

谁能建议我在这种情况下如何构建查询。

【问题讨论】:

    标签: mysql spring hibernate


    【解决方案1】:

    尝试连接你的字符串以像这样搜索

    select name,gender from account where fullname like '%' + yourVariable + '%';
    

    假设yourVariable 包含您要搜索的字符串。

    编辑:

    正如 OP 在 cmets 中确认的,对他/她有用的查询是:

    select name,gender from account where fullname='" + fullname1+ "'";
    

    您的查询也容易受到 SQL 注入的影响。所以最好使用Prepared statement

    【讨论】:

    • 谢谢q.my的问题已经通过同胞查询解决了。
    • select name,gender from account where fullname='" + fullname1+ "'";
    • @mvswetha:- 是的,它也可以。区别仅在于在我的情况下它使用通配符匹配进行搜索,而在您的情况下它是完全匹配的。您的查询看起来像是在寻找匹配的模式。
    • -1:以你的名声,你绝对不建议像这样将变量连接成SQL字符串,而不是建议使用准备好的语句和绑定变量。
    • @LukasEder:- 感谢您的指点。它更像是一个 SQL,而不是编程部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 2013-02-17
    • 2018-05-10
    • 2019-02-18
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多