我怎样才能摆脱“多重”呢;不象;Oracle SQL中的子句?

我怎样才能摆脱“多重”呢;不象;Oracle SQL中的子句?,sql,oracle,Sql,Oracle,我有一个查询,其中我获取数据库中表的DDL 有外部挂载的表、临时表和其他我不需要这些信息的表,所以我有像,…其中object\u name不像'ext\u%'…这样的子句,但我有六个这样的子句 是否有某种方法可以将它们组合起来,这样我就可以做一些类似于…其中object\u name不喜欢in(EXT\uu%,TMP\uu%,…) 有点像你可以这样说,…id在(1,2,3)中的位置可能与regexp\u类似 大概是这样的: 。。。在不喜欢regexp的地方(对象名'EXT\.*TMP\..*T

我有一个查询,其中我获取数据库中表的DDL

有外部挂载的表、临时表和其他我不需要这些信息的表,所以我有像,
…其中object\u name不像'ext\u%'…
这样的子句,但我有六个这样的子句

是否有某种方法可以将它们组合起来,这样我就可以做一些类似于
…其中object\u name不喜欢in(EXT\uu%,TMP\uu%,…)

有点像你可以这样说,
…id在(1,2,3)中的位置

可能与regexp\u类似

大概是这样的:


。。。在不喜欢regexp的地方(对象名'EXT\.*TMP\..*TMP\..*XXX…')

如果它们都是模式XXX,您可以去掉前四个字符并使用not in('EXT|','TMP|'

或者,也许有一张小桌子,里面放着他们,然后做一个外部连接

另一个选择可能是

不像“[ET][XM][TP]u%” 但这不是很容易理解

PS假定您正在转义下划线,因为它是任何单个字符。

这是什么呢:

...
WHERE SUBSTR(object_name, 1, 4) NOT IN ('EXT_', 'TMP_', ...)

这正是我要找的。谢谢!呃,不幸的是,这并没有像它应该的那样过滤掉表。我将继续摆弄它,因为它是我想象的解决方案的样子…@phileas fogg,IMHO这是在Oracle中做这件事的正确方法,唯一的事情是编写正确的正则表达式,如果你需要的话我们会给我们字符串,你看起来就像我们会地狱你描述正确的regexp