0

阿罗哈

我需要过滤结果。我做了“不喜欢”的约束。但我想更有效率。

这是我尝试过的:以“不喜欢”的风格

`

  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')`

并在正则表达式中:

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

regexp_like 子句没有按我的预期工作。但是我不知道怎么写。我想要除以 _O、_Y、_X、...结尾的所有结果

4

2 回答 2

0

我不熟悉正则表达式的 oracle 风格,但是在简要查看了他们的文档之后,我希望这样的东西可以工作:

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

或者

.*?_[OYZ]$

它说:

  • .*?- 匹配后面的任何内容(非贪婪匹配)
  • _- 下划线文字,后跟
  • (O|Y|Z)- O 或 Y 或 Z(这是一个捕获组 - 在标准正则表达式中,我会使用 (?:) 但它可能不受支持
  • $- 在字符串的末尾

另一种方法是使用字符类[OYZ],这意味着任何这些字符。

于 2012-05-29T12:18:50.683 回答
0

尝试类似:

NOT REGEXP_LIKE (COLUMN_NAME, '_([STXYLO]|S[GT]|[XY][12])$')
于 2012-05-29T12:19:49.193 回答