【问题标题】:MySql - How to query multiple boolean columns?MySql - 如何查询多个布尔列?
【发布时间】:2015-10-12 06:19:31
【问题描述】:

我的 SQL 表中有 15 个布尔列。 我想以一种有效的方式查询而不使用:

"bool1 = bool1Val AND bool2=bool2Val AND bool3=bool3Val....."

有没有更好的办法?

非常感谢

【问题讨论】:

  • 你的专栏是什么类型的?
  • 高效是指查询更容易输入吗?否则我看不出有什么低效的地方。
  • 什么意思?它是布尔值 - 真或假。现在我注意到在 DB 中它被保存为 0 或 1
  • 是的 - 我想知道我是否可以避免写 15 次 AND x=x1..
  • 好吧,你可以把它们打包成一个 SET 列并使用WHERE new_col = 'bool2,bool3,bool5'

标签: java mysql sql mysql-workbench


【解决方案1】:

您可以将这些列组合成一个包含 0 和 1 的字符串列,并在单个查询中读取它们,例如 0011 表示 false false true true。

有一个 char 16 来存储它。 (只是一个数据库优化)

    // courtesy @amitmahajan comment
    String selectTableSQL = "SELECT USER_FLAGS from DBUSER"; 
    Statement statement = dbConnection.createStatement(); 
    ResultSet rs = statement.executeQuery(selectTableSQL); 
    while (rs.next()) 
    { 
    String userFlags = rs.getString("USER_FLAGS”); 
    boolean isUserEnabled = userFlags.charAt(0)==1?true:false; 
    } 

【讨论】:

  • 如果你在这里放一些更有用的示例代码会很棒:)
  • String selectTableSQL = "SELECT USER_FLAGS from DBUSER";语句语句 = dbConnection.createStatement();结果集 rs = statement.executeQuery(selectTableSQL); while (rs.next()) { String userFlags = rs.getString("USER_FLAGS"); boolean isUserEnabled = userFlags.charAt(0)==1?true:false; }
  • 谢谢 tinka,你是怎么把代码弄成这样的
  • 只需输入代码并选择代码并按 ctrl + K stackoverflow.com/help/how-to-answer
猜你喜欢
  • 1970-01-01
  • 2012-03-06
  • 2018-08-13
  • 1970-01-01
  • 2017-04-15
  • 2015-12-15
  • 1970-01-01
  • 2022-07-13
  • 1970-01-01
相关资源
最近更新 更多