1
我originally asked for help在管道分隔的列表,其中的值必須包括4
或5
,但從來沒有2
或3
找到值。但是,接受的解決方案本身會返回值255
。黑斑羚正則表達式來找到「2」,而不是「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 |
我需要一個查詢將返回行,其中包括值爲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%"
我認爲你需要擺脫錨。你想匹配數字和管道之間的字符串**或**的開始或結束。詞邊界處理這兩個條件。 –
我試圖既沒有錨運行它,和它導致以下錯誤在因帕拉: 你的查詢有以下錯誤(S): 的請求6360壞狀態:TGetOperationStatusResp(狀態= TStatus(的errorCode = None,errorMessage = None,sqlState = None,infoMessages = None,statusCode = 0),operationState = 5,errorMessage = None,sqlState = None,errorCode = None) – SummerEla