java - 如何从逗号拼接的数据库字符串中选择 - SQL
问题描述
String name = null;
String keyword2 = null;
String author = "John";
PreparedStatement stmt3 = DBM.conn.prepareStatement("SELECT * FROM `timelines` LEFT JOIN `users` ON users.UserID = timelines.TimelineOwner WHERE " +
" `TimelineName` = COALESCE(NULLIF(?, ''), `TimelineName`) AND `Keywords` = COALESCE(NULLIF(?, ''), `Keywords`) and `UserName` = COALESCE(NULLIF(?, ''), `UserName`);") ;
stmt3.setString(1, name);
stmt3.setString(2, keyword2);
stmt3.setString(3, author);
List<Timeline> list = DBM.getFromDB(stmt3, new Timeline());
以上是我对 MySQL 数据库的搜索查询,一切都很好,除了我想添加一个附加项,但我不知道如何编码。
问题是关键字存储在数据库中的逗号拼接字符串中,当我将关键字参数更改为“Rome”时,它应该返回该时间轴,但它没有返回,因为数据库字符串是罗马、凯撒、太阳。 .....我如何添加到查询中,以便在关键字列中 - 它应该单独将参数与单词进行比较?
更新:也许我可以使用 FIND_IN_SET() 如果返回大于 0 则返回匹配?
解决方案
您可以使用 SQL LIKE 运算符在逗号分隔的字符串中搜索特定关键字:
SELECT * FROM 'timelimes' WHERE 'keywords' LIKE %Rome%
推荐阅读
- ruby-on-rails - Rails 5,聚合范围
- javascript - Javascript/Jquery JSON 文件上传
- prolog - Prolog 存储函数的结果
- javascript - 如何使用 ES6 模板文字进行函数调用
- java - 如何将等效的 GO 代码转换为 Java 代码?
- node.js - 无法使用 res.redirect() 方法 express + NodeJS 进行重定向
- ios - bar Button Item text 在moonIcon中选择时会发生变化,如swift 4中的Font Awesome
- javascript - 在 jQuery 中附加外部 PHP 文件
- jwt - 基于 JWT 声明的 Istio Origin 授权
- selenium - 一次创建 Selenium Webdriver 并在 Cucumber 的所有步骤中使用