【发布时间】:2015-07-02 00:32:31
【问题描述】:
我有一列包含由管道分隔的 STRING 值的行:
| colA |
___________
| 5|4|2|255 |
| 5|4|4|0 |
| 5|4|4|3 |
| 5|4|4|4 |
我需要创建一个查询,该查询将选择包含 4 或 5 的所有行,但从不选择 2 或 3。类似于以下内容:
SELECT t.colA
FROM my_table t
WHERE (t IN ("4", "5") AND t NOT IN ("2","3")
导致:
| colA |
___________
| 5|4|4|0 |
| 5|4|4|4 |
我最终使用了以下两个答案的组合,因为单独使用任何一种方法仍然会给我留下仅包含“255”的行。这是最终的查询:
SELECT t.colA
FROM my_table t
WHERE (t.colA IN ('4', '5') OR t.colA LIKE "%|5|%"
OR t.colA LIKE "%|5" OR t.colA LIKE "5|%")
AND t.colA NOT LIKE "%3%"
AND t.colA NOT LIKE "%|2|%"
AND t.colA NOT REGEXP "^2|%"
AND t.colA NOT REGEXP "%|2$"
可能有一种更优雅的方法可以做到这一点,但这可以解决问题。
【问题讨论】: