在管道分隔列表中查找值,其中的值必须包含45,但不能包含23。但是,接受的解决方案本身返回值255
我有一个带有管道分隔值的数据集,这些值可以是012340r255,例如:

|    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      |

我需要一个查询,它将返回包含值45但从不23的行。
|    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)[[:>:]]$'

请提供更多的测试用例。

10-01 05:12