java - 在 WHERE 子句和 LIKE 中连接 3 列是否可以实现?

标签 java mysql jdbc

我想使用 Java 中的 MySQL 进行这样的查询。我想制作一个类似于 facebook 的搜索栏,不需要特定的列来搜索,而是通过许多列进行搜索。

    DefaultTableModel model=(DefaultTableModel) table.getModel();
    model.setRowCount(0);
    String key = searchbar.getText();
    Connection con = Connect();

    String sql="Select * from table1 WHERE Surname,Middlename,Firstname LIKE ?";
    PreparedStatement statement = con.prepareStatement(sql);
    statement.setString(1, "%" +key+ "%");


       ResultSet result =  statement.executeQuery();

我如何实现这样的目标?提前致谢!

最佳答案

您当前的语法将不起作用,但您没有理由不能将 LIKE 表达式重复三次,每列一次:

String sql = "SELECT * FROM table1 WHERE Surname LIKE ? OR ";
sql +=       "Middlename LIKE ? OR Firstname LIKE ?";
PreparedStatement statement = con.prepareStatement(sql);
statement.setString(1, "%" + key + "%");
statement.setString(2, "%" + key + "%");
statement.setString(3, "%" + key + "%");

来自@SBF的编辑我已将您的WHERE子句中的术语组合在一起。如果您确实想要所有三个名称都与键匹配的记录,请将 OR 替换为 AND

关于java - 在 WHERE 子句和 LIKE 中连接 3 列是否可以实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47034611/

相关文章:

java - Spring 不返回默认验证错误响应

java - 动态添加 ImageView 并设置其位置

mysql - 某些整数数据类型是否与其他编程语言不同?

mysql - 具有多个用户 ID 的表的复杂查询

javascript - 使用 Promise/resolve 和 async/await 从函数返回 MySql 结果

java - 建立套接字时出错

java - 正则表达式:?: notation(问号和冒号)

java - 是否可以在 Java 中使菜单中的某些项目以 500 毫秒的启动延迟淡入?

java - 在 JTable 中显示实体属性值数据?

java - 在 Java 中使用 JDBC 访问 .mdf SQL Server 文件?