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

#sql #oracle

#sql #Oracle

Вопрос:

Обычно запрос должен быть таким, как показано ниже.

 SELECT * FROM customers WHERE first_name = 'alex'
  

Можем ли мы написать так?

 SELECT * FROM customers WHERE 'alex' = first_name
  

Кроме того, если это работает, почему?

Комментарии:

1. Почему вы не ожидаете, что это сработает в любом случае?

2. ДА. Порядок операндов не имеет значения.

3. Да, это работает , но не обязательно, поскольку SQL не использует == .

4. Оба 'alex' и first_name являются просто выражениями. Один из них является скалярной константой, другой — скаляром из столбца. Но они по-прежнему являются простыми выражениями, и они по-прежнему являются скалярами. Я не уверен, почему вы думаете, что было бы важно, каким образом вы сравниваете их с помощью оператора равенства. Равенство скаляров всегда коммутативно…

Ответ №1:

Это условие Oracle с 3 выражениями, одно из которых является выражением столбца, а другое простым выражением

Оба являются допустимыми выражениями expr :

Ответ №2:

Это работает, и это так, потому что = выполняется в обоих направлениях, то есть то, что находится слева от equals, равно тому, что находится справа от equals, и наоборот.

Ответ №3:

Это работает на MS-SQL-Server, и я использую, что это будет работать и на Oracle — почему? Почему бы и нет? Для сервера не имеет значения, сравнивает ли он столбцы, переменные со статическими значениями или строки. Он всегда оценивает обе стороны ‘=’.

Ответ №4:

Да, это будет работать. Потому что это успешное выполнение expression условия

Комментарии:

1. ссылка — sql server, в то время как вопрос касается oracle

2. не обнаружено. но логика та же, я думаю