0
查看以下三個查詢。我無法理解,如果評估爲TRUE的條件在附加到where子句時不會返回行。我期望在第二個查詢中獲得User1,因爲第一個查詢顯示條件評估爲TRUE。評估爲TRUE的表達式在WHERE子句中不起作用
cr> select full_name, labels, not 'autogenerated' = ANY(labels), not 'autogenerated' = ANY(labels) or labels = [] from testdb_master_core_users;
+----------------+-------------------+-------------------------------------+--------------------------------------------------------+
| full_name | labels | (NOT 'autogenerated' = ANY(labels)) | ((NOT 'autogenerated' = ANY(labels)) OR (labels = [])) |
+----------------+-------------------+-------------------------------------+--------------------------------------------------------+
| User2 Lastname | ["otherlabel"] | TRUE | TRUE |
| User3 Lastname | ["autogenerated"] | FALSE | FALSE |
| User1 Lastname | [] | TRUE | TRUE |
+----------------+-------------------+-------------------------------------+--------------------------------------------------------+
SELECT 3 rows in set (0.003 sec)
cr> select full_name, labels, not 'autogenerated' = ANY(labels) from testdb_master_core_users where not 'autogenerated' = ANY(labels);
+----------------+----------------+-------------------------------------+
| full_name | labels | (NOT 'autogenerated' = ANY(labels)) |
+----------------+----------------+-------------------------------------+
| User2 Lastname | ["otherlabel"] | TRUE |
+----------------+----------------+-------------------------------------+
SELECT 1 row in set (0.002 sec)
cr> select full_name, labels, not 'autogenerated' = ANY(labels) from testdb_master_core_users where not 'autogenerated' = ANY(labels) or labels = [];
+----------------+----------------+-------------------------------------+
| full_name | labels | (NOT 'autogenerated' = ANY(labels)) |
+----------------+----------------+-------------------------------------+
| User2 Lastname | ["otherlabel"] | TRUE |
| User1 Lastname | [] | TRUE |
+----------------+----------------+-------------------------------------+
SELECT 2 rows in set (0.002 sec)
在GitHub中添加了與此相關的故障單:https://github.com/crate/crate/issues/5132 –