Лучший вариант для состояния дела в оракуле sql - PullRequest
0 голосов
/ 18 октября 2018

У меня есть сценарий, в котором использование условия case делает запрос очень длинным.

Сценарий состоит в том, что у меня есть столбцы типа QUESTION_NO, QUESTION_1, QUESTION_2, QUESTION_3, QUESTION_4 доQUESTION_20.

QUESTION_NO будет иметь значения от 1 до 20. Если значение равно 1, тогда я должен проверить, если QUESTION_1 != 'choose one'.

Аналогично, если значение QUESTION_NO =2 Я должен проверить два вопроса QUESTION_1 != 'choose one' и QUESTION_2 != 'choose one'.

Так что, если значение QUESTION_NO равно 20, тогда мне нужно проверить все столбцы от QUESTION_1 до QUESTION_20 для значения!= 'choose one'.

Есть ли лучший способ сделать это, например, использовать подстроку или что-то в sql.

1 Ответ

0 голосов
/ 18 октября 2018

Если все дополнительные вопросы пусты, то вы можете объединить и сравнить:

where '|' || question_1 || '|' || question_2 || '|' . . . || '|' like '%|choose one|%'

Я подозреваю, что это относится к вашей модели данных.Как упоминает Corion в комментарии, вы должны исправить свою модель данных, чтобы у вас была одна строка на вопрос, а не один столбец.Запрос был бы намного проще.

Если дополнительные столбцы не пусты, то вы можете использовать регулярные выражения для извлечения первых QUESTION_NO значений из объединенной строки.

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