Значение перед переменной - PullRequest
       10

Значение перед переменной

5 голосов
/ 05 февраля 2010

Я смотрю на некоторый код SQL, который имеет предложение WHERE, например:

WHERE 'USD' = CCY

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

Я никогда раньше этого не видел.

Что ты думаешь?

Ответы [ 6 ]

8 голосов
/ 05 февраля 2010

Э-э, C ++ не является SQL. В SQL нет == и в предложении WHERE нет назначений.

Я не уверен, что это квалифицируется как "лучшая практика", но есть соглашение, которое помещает известное значение в правую часть Итак, с литералом, как в вашем примере, это будет

WHERE CCY = 'USD' 
4 голосов
/ 05 февраля 2010

Лучшая практика в c ++ не делает ее лучшей в SQL. Оптимизатору запросов будет все равно, так что это всего лишь вопрос предпочтений, но я должен сказать, что это не будет моим предпочтением или тем, как я его напишу.

2 голосов
/ 05 февраля 2010

Никогда не видел его в SQL, где, конечно, рассуждения C ++ не применяются, так как '=' не является оператором присваивания в этом контексте. кроме того, многим программистам на C ++ (включая меня) этот стиль не нравится.

0 голосов
/ 05 февраля 2010

Если он скажет, что это лучшая практика, я бы попросил его доказать это с помощью SQL, а не C ++ источников. Поскольку 99,9% кода SQL, который я когда-либо читал (включая наш код, код другой организации, файлы справки Microsoft, блоги SQL и т. Д.), Противоположны тому, что делает ваш разработчик, я бы сказал, что это нарушает обычные ожидания Разработчик, который будет поддерживать код - плохая идея. В SQL мы ожидаем увидеть форму

WHERE CCY = 'USD'  

не

WHERE  'USD' = CCY  

Поэтому профессионал также будет писать код таким образом, чтобы он был понятен сопровождающему.

0 голосов
/ 05 февраля 2010

Лично я бы так не поступил, но поместил имя столбца слева, так как для меня это более читабельно / проще для отслеживания в запросе SQL.

Я очень редко видел, как это происходит наоборот, и не думаю, что приведенная причина действительно применима к SQL (как уже было сказано, это "=" в SQL, а не "==")

0 голосов
/ 05 февраля 2010

Если вы посмотрите на это:

'USD' = CCY

по сути то же самое:

 CCY = 'USD'

Что касается:

это лучшая практика, stemming из C ++, где люди могли ошибочно назначить значение вместо сравнения равенство, забыв второе знак равенства.

Ну, я никогда не видел, чтобы это случилось, и если бы это было так важно, мы бы наверняка видели это где-то, и это практиковалось бы большинством, если не всеми.

...