2014-10-20 74 views
0

我有一個字符串像A12345678B我怎麼可以搜索OCCURENCES在字符串與Oracle REGEXP_INSTR

我希望能夠檢查一個字符串以字符開始,之後是8個數字和一個字符結尾。

我們正在努力:

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

這將返回:

11 

我們希望能夠確定,如果一個字符串不啓動,並以字符結束,不跟8數字在第一個字符後面(參見上面的示例字符串),那麼這不是我們正在尋找的字符串。

回答

3

串與字符

^[[:alpha:]] 

之後是8位數字

[[:digit:]]{8} 

開始於一個字符結尾

[[:alpha:]]$ 

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

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

[[:alpha:]]{10}在你的正則表達式假設必須有8位號碼後,目前正好是10個字母。

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

試試這個。把主播。

1

如果您想要完整的字符串匹配,請嘗試使用regexp_like。對於匹配,使用方法:

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

對於非匹配使用:

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

注:這假定您要篩選的結果(這是你的問題意味着什麼,而不是把標誌進入select條款。