簡體   English   中英

Oracle SQL自定義通配符

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

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