簡體   English   中英

Oracle SQL正則表達式以匹配Varchar列-視為數字

[英]Oracle SQL Regular expression to match Varchar column - treat as numbers

我有一個表,該表的列的數據類型為VARCHAR2(7 Char)。 此列中的數據具有諸如1006、1007、2002等的值

我想要一個匹配4002、4003、4005、4011、4013但不匹配4001的正則表達式。

首先,我嘗試使用To_number(columnName) > 4001但收到ORA-01722無效數字錯誤。

然后,我嘗試為此使用Regexp_like失敗。 我試過了:

 1. 40[02,03,05,11,13]
 2. 40[0,1][^01]
 3. 40[0,1]([2,3,5,11])

任何幫助,將不勝感激!

干杯

您可以使用以下條件:

 col in ('4002','4003','4005','4011','4013')

如果您確實需要使用regexp_like ,則可以通過多種方法進行。 以下是一些降低可讀性和長度的順序:

 regexp_like(col, '^(4002|4003|4005|4011|4013)$')
 regexp_like(col, '^40(02|03|05|11|13)$')
 regexp_like(col, '^40(0[235]|1[13])$')

請注意,正則表達式( [ ... ] )中的類列出了要匹配的單個字符,而不是序列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM