0

我正在使用 Rails 3.2.2,我想从数据库中检索至少存在 10 个列值中的 3 个的记录。也就是说,如果我有一个具有 10 个属性(表列)的类(一个 MySQL 数据库表),其值可以是nilnull存在属性值(不存在null)。

可能吗?如果是这样,如何做到这一点?

更新如果我有一个具有 10 个属性(表列)的类(一个 MySQL 数据库表),其值可以是nilnull”(不是 null),那么我想执行一个查询,以便返回对象(记录),其中至少这 10 个属性值中有 3 个存在(不是null 也不是“ ”)。

4

1 回答 1

6

您可以与测试每一列的总和进行比较:IS NOT NULL AND <>

WHERE (  (colA IS NOT NULL AND colA <> ' ')
       + (colB IS NOT NULL AND colB <> ' ')
       + ...
       + (colJ IS NOT NULL AND colJ <> ' ')
      ) >= 3

这是有效的,因为每个测试的布尔结果都隐式转换为1(如果为真)或0(如果为假);因此总和是既不是NULL也不是的列数' '

或者,您可以NULL使用以下方法处理此案例IFNULL()

WHERE (IFNULL(colA<>' ',0) + IFNULL(colB<>' ',0) + ... + IFNULL(colJ<>' ',0)) >= 3
于 2012-05-18T08:59:32.357 回答