2016-09-15 1 views
2

предположим у меня естьКак не выбрать, если значение начинается с ул%, но не заканчивается% ул, регулярное выражение, например,

  • Red.House.Value
  • Red.House
  • Green.House

в column1

Я хочу, чтобы выбрать все, за исключением, если значение начинается с «Red.House%», но игнорировать, когда оно заканчивается .Value

Результат должен выглядеть следующим образом:

  • Red.House.Value
  • Green.House

Regex: https://regex101.com/r/vM0pQ3/1^(= Red.House?) (?!. Значение).

Я исхожу из превосходства, не уверен, что лучше всего в оракуле.

ответ

3

Попробуйте это:

SELECT * FROM ... WHERE column1 NOT LIKE 'Red.House%' OR column1 LIKE '%.Value' 
+0

ТНХ, мой мыслительный процесс все еще слишком сложно – Paulomnia

0

Я не сделал много, но есть регулярная функция выражения в оракула, что вы могли бы использовать в своих предикатах:

ГДЕ REGEXP_LIKE (field_name "^(= Red.House?) ') (Value?!.);

Подробнее здесь: https://docs.oracle.com/cd/B12037_01/server.101/b10759/conditions018.htm

+0

у меня были проблемы с этим решение каким-то образом, я думаю, что синтаксис регулярных выражений оракул немного отличается или я что-то не хватает, все равно Санти дал очень хорошее и простое решение. Спасибо! – Paulomnia

+0

Да, я просто вставил ваше выражение там ... Я не тестировал. Я уверен, что формат будет отличаться, и, как вы указали, необязательно с возможностью простого добавления большего числа предикатов. – slambeth