簡體   English   中英

如何使用Oracle REGEXP_INSTR搜索字符串中的事件

[英]How can I search for occurences in a string with Oracle REGEXP_INSTR

我有一個像A12345678B這樣的字符串

我希望能夠檢查字符串是否以字符開頭,后跟8位數字並以字符結尾。

我們在嘗試着:

SELECT REGEXP_INSTR('A12345678B', '[[:alpha:]]{1}[[:digit:]]{8}[[:alpha:]]{10}',1,1,1,'i') from DUAL

返回:

11

我們希望能夠確定,如果字符串不是以字符開頭和結尾,並且在第一個字符之后不跟8位數字(請參見上面的示例字符串),那么這不是我們要查找的字符串。

字符串以字符開頭

^[[:alpha:]]

后跟8位數字

[[:digit:]]{8}

以一個字符結尾

[[:alpha:]]$

所以完整的正則表達式就是

^[[:alpha:]][[:digit:]]{8}[[:alpha:]]$

正則表達式中的[[:alpha:]]{10}假定8位數字后面必須有10個字母。

^[a-zA-Z][0-9]{8}[a-zA-Z]$

試試這個。放錨。

如果想要完整的字符串匹配,請嘗試使用regexp_like 要進行匹配,請使用:

WHERE REGEXP_LIKE('A12345678B', '^[[:alpha:]]{1}[[:digit:]]{8}[[:alpha:]]{1}$') 

對於不匹配的用途:

WHERE NOT REGEXP_LIKE('A12345678B', '^[[:alpha:]]{1}[[:digit:]]{8}[[:alpha:]]{1}$') 

注意:這假設您要過濾結果(這是您的問題所暗示的,而不是將標志放入select子句中。

暫無
暫無

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

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