2013-03-06 3 views
-3

следующую структуру поля:Oracle: Выбрать записи по тексту внутри колонке

Application1X, Application2X, Application3Y, Dashboard

Цель: Получить все записи, где:

  • Где Application1X и Dashboard находятся внутри строки
  • Где Приложение2X является NOT внутри строки

Я пробовал с:

SELECT * FROM APPS WHERE APPLIST LIKE '%Application1X%' 
AND APPLIST LIKE '%Dashboard%' AND APPLIST NOT LIKE '%Application2X%'; 

Но результаты не так, я думаю будет проблема с «LIKE» Поиск. Есть ли лучший способ выполнить этот запрос без изменения структуры таблицы?

+2

Ваш запрос неверен. Результаты не ошибаются, это должно вызвать ошибку; он должен быть «И АППЛИК НЕ НРАВИТСЯ»% Application2X% ''. Ваш запрос в противном случае правильный и вернет ожидаемые результаты. Если результаты «неправильные», вы можете предоставить образцы данных, которые показывают, почему результаты являются неправильными и что вы ожидаете от них. – Ben

+0

Ответ: – Sergio

+0

Нет @ Серхио, вопрос слишком локализован, и поэтому я проголосовал за закрытие. – Ben

ответ

1

Интересно, как описанный выше оператор работает в Oracle без указания имени столбца до того, как он не похож на Просто включите APPLIST NOT LIKE '% Application2X%';

SELECT * FROM APPS WHERE APPLIST LIKE '%Application1X%' 
AND APPLIST LIKE '%Dashboard%' AND APPLIST NOT LIKE '%Application2X%'; 
0

Должен ответить на это сам.

Был логический сбой: более высокие записи без «ТЕКСТА» в этих столбцах находятся в базе данных.

Так добавил:

OR APPLIST IS NULL 

Теперь результаты, как ожидается.

Смежные вопросы