Impala 用于在管道分隔列表中查找“2”而非“255”的正则表达式
Impala regex to find "2", but not "255", in pipe-delimited list
我 在竖线分隔列表中查找值,其中值必须包含 4
或 5
,但绝不包含 2
或 3
。但是,公认的解决方案 return 本身就是值 255
。
我有一个数据集,其中的竖线分隔值可以是 0
、1
、2
、3
、4
0r 255
,例如:
| colA |
____________
| 1|1|0|255 |
| 5|4|4|2 |
| 5|4|4|3 |
| 5|4|4|4 |
| 1|0|0|0 |
| 0|2|0|1|2 |
| 5|5|0|5 |
| 0|5 |
| 5|5|255|255|
| 0|3|1|2|3 |
| 5|5|5|2|3|3|
| 0|2|0|0|0|2|
| 5|255|1|1|5|
| 4|255|4 |
| 2|2|3 |
| 255|0 |
| 5 |
| 5|5|1 |
我需要一个查询,该查询将 return 行包含值 4
或 5
,但绝不会包含 2
或 3
。
| colA |
____________
| 5|4|4|3 |
| 5|4|4|4 |
| 5|5|0|5 |
| 0|5 |
| 5|5|255|255|
| 5|255|1|1|5|
| 4|255|4 |
| 5 |
| 5|5|1 |
我最接近的是这个查询:
SELECT clin.clin_sig
FROM clinvar clin
WHERE (clin_sig NOT REGEXP '3|2[^5]'
AND clin_sig REGEXP '4|[^25]5')
但它缺少以下条目,所以有些东西不对劲:
5
5|255
5|5|5|5|5|5|5
5|0
5|255|255
5|5|1
我也试过这个,但是速度很慢,而且仍然缺少一些结果:
WHERE (clin.clin_sig LIKE "%4%" OR clin.clin_sig REGEXP "^5$"
OR clin.clin_sig REGEXP "^5\|"
OR clin.clin_sig REGEXP "\|5$" OR clin.clin_sig REGEXP "\|5\|")
AND clin.clin_sig NOT REGEXP "^2$"
AND clin.clin_sig NOT REGEXP "\|2$"
AND clin.clin_sig NOT REGEXP "^2\|"
AND clin.clin_sig NOT LIKE "%3%"
clin_sig REGEXP '^[[:<:]](4|5)[[:>:]]$'
AND clin_sig NOT REGEXP '^[[:<:]](2|3)[[:>:]]$'
请提供更多测试用例。
我 4
或 5
,但绝不包含 2
或 3
。但是,公认的解决方案 return 本身就是值 255
。
我有一个数据集,其中的竖线分隔值可以是 0
、1
、2
、3
、4
0r 255
,例如:
| colA |
____________
| 1|1|0|255 |
| 5|4|4|2 |
| 5|4|4|3 |
| 5|4|4|4 |
| 1|0|0|0 |
| 0|2|0|1|2 |
| 5|5|0|5 |
| 0|5 |
| 5|5|255|255|
| 0|3|1|2|3 |
| 5|5|5|2|3|3|
| 0|2|0|0|0|2|
| 5|255|1|1|5|
| 4|255|4 |
| 2|2|3 |
| 255|0 |
| 5 |
| 5|5|1 |
我需要一个查询,该查询将 return 行包含值 4
或 5
,但绝不会包含 2
或 3
。
| colA |
____________
| 5|4|4|3 |
| 5|4|4|4 |
| 5|5|0|5 |
| 0|5 |
| 5|5|255|255|
| 5|255|1|1|5|
| 4|255|4 |
| 5 |
| 5|5|1 |
我最接近的是这个查询:
SELECT clin.clin_sig
FROM clinvar clin
WHERE (clin_sig NOT REGEXP '3|2[^5]'
AND clin_sig REGEXP '4|[^25]5')
但它缺少以下条目,所以有些东西不对劲:
5
5|255
5|5|5|5|5|5|5
5|0
5|255|255
5|5|1
我也试过这个,但是速度很慢,而且仍然缺少一些结果:
WHERE (clin.clin_sig LIKE "%4%" OR clin.clin_sig REGEXP "^5$"
OR clin.clin_sig REGEXP "^5\|"
OR clin.clin_sig REGEXP "\|5$" OR clin.clin_sig REGEXP "\|5\|")
AND clin.clin_sig NOT REGEXP "^2$"
AND clin.clin_sig NOT REGEXP "\|2$"
AND clin.clin_sig NOT REGEXP "^2\|"
AND clin.clin_sig NOT LIKE "%3%"
clin_sig REGEXP '^[[:<:]](4|5)[[:>:]]$'
AND clin_sig NOT REGEXP '^[[:<:]](2|3)[[:>:]]$'
请提供更多测试用例。