#sql
#sql
Вопрос:
Уместен ли порядок выражений в инструкции compare? Например:
select * from person where name = 'John'
и
select * from person where 'John' = name
Есть ли другая причина, помимо удобства чтения, для того, чтобы сначала указывать столбец вместо значения?
Комментарии:
1. Нет, это не имеет значения.
2. Есть ли какая-либо причина, кроме отсутствия удобочитаемости, для помещения значения первым?
Ответ №1:
В документации большинства систем баз данных SQL будут разделы, явно описывающие их синтаксис. Я буду использовать условие поиска SQL Servers 1, поскольку это моя самая распространенная ссылка:
<search_condition> ::= MATCH(<graph_search_pattern>) | <search_condition_without_match> | <search_condition> AND <search_condition> <search_condition_without_match> ::= { [ NOT ] <predicate> | ( <search_condition_without_match> ) } [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition_without_match> ) } ] [ ...n ] <predicate> ::= { expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression
Здесь мы можем видеть, что элементы с обеих сторон =
(а также многие другие операторы) описываются как expression
— то есть все, что может появиться слева, может одинаково хорошо появиться справа.
Сравните это, например, с IN
2:
| expression [ NOT ] IN ( subquery | expression [ ,...n ] )
где мы можем ясно видеть, что то, что разрешено слева и справа, немного отличается.
Если у вас есть вопросы по синтаксису, стоит обратиться к соответствующей документации для вашего продукта базы данных. Для стандартного SQL, как здесь, подойдет документация практически любого продукта.
1, который, в свою очередь, был получен из документации для WHERE
2 Та же страница, что и <predicate>
Комментарии:
1. Спасибо за понимание, Damien_The_Unbeliever!