2012-05-29 47 views
0

Aloha

我需要篩選結果。我用'不喜歡'的約束。但我想更有效率。

這裏是我試過:

REGEXP_LIKE (COLUMN_NAME, '[^\_O|Y]*') 

的REGEXP_LIKE條款犯規的工作:在一個 '不喜歡' 風格

`

AND S.COLUMN_NAME NOT LIKE ('%_S') 
    AND S.COLUMN_NAME NOT LIKE ('%_T') 
    AND S.COLUMN_NAME NOT LIKE ('%_X') 
    AND S.COLUMN_NAME NOT LIKE ('%_Y') 
    AND S.COLUMN_NAME NOT LIKE ('%_L') 
    AND S.COLUMN_NAME NOT LIKE ('%_SG') 
    AND S.COLUMN_NAME NOT LIKE ('%_ST') 
    AND S.COLUMN_NAME NOT LIKE ('%_X1') 
    AND S.COLUMN_NAME NOT LIKE ('%_Y1') 
    AND S.COLUMN_NAME NOT LIKE ('%_X2') 
    AND S.COLUMN_NAME NOT LIKE ('%_Y2') 
    AND S.COLUMN_NAME NOT LIKE ('%_O')` 

,並在正則表達式 如我所料。但我不知道如何寫它。我希望除了以_O,_Y,_X結尾的所有結果...

回答

0

我並不熟悉oracle的正則表達式,但在簡要了解他們的文檔之後,我希望能夠像這樣工作:

.*?_(O|Y|Z)$ 

.*?_[OYZ]$ 

它說:

  • .*? - 匹配任何其後通過(非貪婪匹配)
  • _ - 下劃線文字,後面
  • (O|Y|Z) - O或Y或Z(這是捕獲組 - 標準的正則表達式我會用(:)代替,但它可能不支持
  • $ - 在字符串

另一種方法是用一個字符類[OYZ]這意味着所有這些字符的結束。

0

試着這麼做:

NOT REGEXP_LIKE (COLUMN_NAME, '_([STXYLO]|S[GT]|[XY][12])$') 
+0

感謝。真的很有幫助。 – Brindavoine

+0

@Bindindo,歡迎來到SO!你應該[接受回答你的問題](http://meta.stackexchange.com/a/5235/163680),如果他們幫助你,你可以隨意投票。 :-) – Qtax