[英]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.