Как я могу избавиться от нескольких предложений "не нравится" в моем Oracle SQL? - PullRequest
2 голосов
/ 09 декабря 2011

У меня есть запрос, где я беру DDL для таблиц в базе данных.

Существуют внешние, смонтированные таблицы, временные таблицы и другие таблицы, для которых мне не нужна эта информация, поэтому у меня есть такие предложения, как ...where object_name not like 'ext_%'..., но у меня есть шесть таких.

Есть ли способ объединить их, чтобы я мог сделать что-то вроде ...where object_name not like in (EXT_%, TMP_%,...)?

вроде как можно сказать, ...where id in (1,2,3).

Ответы [ 3 ]

4 голосов
/ 09 декабря 2011

может быть с regexp_like http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/conditions018.htm

примерно так:

... где не regexp_like (имя_объекта, 'EXT \. * | TMP \. * | .....«)

3 голосов
/ 09 декабря 2011

Как насчет этого:

...
WHERE SUBSTR(object_name, 1, 4) NOT IN ('EXT_', 'TMP_', ...)
0 голосов
/ 09 декабря 2011

Если все это шаблон XXX_%, вы можете удалить первые четыре символа и использовать не в ('EXT _', 'TMP _'

Или у perhapos есть крошечная таблица с ними и сделать внешнийприсоединиться.

Другой вариант может быть

Не нравится '[ET] [XM] [TP] _%' не очень читабельно, хотя.

PS Возможно, выизбегая подчеркивания, потому что это какой-то один символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...