[英]Oracle SQL Custom Wildcards
我試圖找到所有匹配某個指紋的東西,但Oracle的通配符不是非常精確。
該指紋將是:WHERE符號LIKE'%_ #### @'ESCAPE'\\'
前面的內容無關緊要(%通配符)
接下來是下划線(用'\\'轉義)
然后四個數字(#)
最后是一個角色AZ(@)
我發現了一些使用translate函數的東西,但是我還沒能使它工作。 現在我正在調查正則表達式,但我以前從未使用它們。 我試圖了解它們是什么以及它們如何解決我的問題。
聽起來你想要使用正則表達式而不是LIKE。 您的“指紋”似乎是由正則表達式[_][[:digit:]]{4}[AZ]
regexp_instr
[_][[:digit:]]{4}[AZ]
regexp_instr
,因此您可以使用regexp_instr
來確定指紋是否存在(以及字符串中的位置是什么) )。 在這種情況下,字符串'_1234B'是第一個字符串中的指紋,從位置7開始
SQL> ed
Wrote file afiedt.buf
1 with x as (
2 select 'sb1234_1234Bdelta' str from dual union all
3 select 'no match' from dual
4 )
5 select str,
6 regexp_instr( str, '[_][[:digit:]]{4}[A-Z]' )
7 from x
8* where regexp_instr( str, '[_][[:digit:]]{4}[A-Z]' ) > 0
SQL> /
STR REGEXP_INSTR(STR,'[_][[:DIGIT:]]{4}[A-Z]')
----------------- ------------------------------------------
sb1234_1234Bdelta 7
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.