#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. не обнаружено. но логика та же, я думаю