簡體   English   中英

如何從字母數字字符串中提取10個連續數字?

[英]How to extract 10 consecutive digits from a alphanumeric string?

這將告訴我text_field值是否包含10個連續數字。 現在,如果我需要在新字段中提取這些數字怎么辦。 那將如何工作?

select text_field, 
case when regexp_like(text_field,'|^[0-9]{10}$') then 'Y' else 'N' end check_col
from some_table

應該是這樣的。

SELECT text_field REGEXP_SUBSTR(text_field, '([[:digit:]]{10})$') FROM some_table;

有關詳細信息REGEXP_SUBSTR(source, regexp, position, occurrence, modes)請檢查此函數REGEXP_SUBSTR(source, regexp, position, occurrence, modes)

REGEXP_SUBSTR(源,正則表達式,位置,出現次數,模式)返回一個字符串,其中一部分源與正則表達式匹配。 如果匹配嘗試失敗,則返回NULL。 您可以將REGEXP_SUBSTR與單個字符串或一列一起使用。 您可以在SELECT子句中使用它來僅檢索列的特定部分。 position參數指定源字符串在匹配嘗試中應開始的字符位置。 第一個字符的位置為1。出現參數指定要獲取的匹配項。 將其設置為1可獲得第一個匹配項。 如果您指定一個更大的數字,則Oracle將繼續嘗試從上一個匹配項的末尾開始匹配該正則表達式,直到找到與指定數目相同的匹配項為止。 然后返回最后一場比賽。 如果匹配項較少,則返回NULL。 不要將此參數與反向引用混淆。 Oracle沒有提供返回與捕獲組匹配的字符串部分的功能。 最后三個參數是可選的。

SELECT REGEXP_SUBSTR(column, 'regexp') FROM table;
match := REGEXP_SUBSTR('subject', 'regexp', 1, 1, 'i')
select text_field, regexp_substr(text_field, '[[:digit:]]{10}'),
case when regexp_like(text_field,'[[:digit:]]{10}') then 'Y' else 'N' end check_col
from some_table

這可行。

暫無
暫無

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

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