变量前的值

时间:2010-02-05 13:04:40

标签: sql comparison variable-assignment

我正在查看一些SQL代码,它有一个像这样的WHERE子句:

WHERE 'USD' = CCY

我问作者为什么把价值放在左边,他说这是最好的做法,源于C ++,人们可能错误地分配价值,而不是通过忘记第二个等号来比较平等。 / p>

我以前从未见过这个。

你有什么想法?

6 个答案:

答案 0 :(得分:8)

呃,C ++不是SQL。 SQL中没有==WHERE子句中没有赋值。

我不确定它是否属于“最佳实践”,但有一项惯例将已知值放在右侧。所以,用你的例子中的文字

WHERE CCY = 'USD' 

答案 1 :(得分:4)

c ++中的最佳实践并不是SQL中的最佳实践。查询优化器不关心,所以这只是一个偏好问题,但我不得不说这不是我的偏好或者我自然会如何编写它。

答案 2 :(得分:2)

从未在SQL中看到它,当然C ++推理不适用,因为'='在此上下文中不是赋值运算符。此外,很多C ++程序员(包括我)都不喜欢这种风格。

答案 3 :(得分:0)

如果你看一下:

'USD' = CCY

基本相同:

 CCY = 'USD'

至于:

  

这是最好的做法,干预   来自C ++,人们可能会错误地   分配值而不是比较   忘记第二个是平等的   等于。

嗯,我从来没有见过这种情况,如果这很重要,我们肯定会在某个地方看到这一点,如果不是所有人,大多数人都会这样做。

答案 4 :(得分:0)

我个人不会这样做,但是将列名放在左侧,因为这对我来说在SQL查询中更易读/更容易理解。

我很少看到它以相反的方式完成,并且不认为给出的原因真的适用于SQL(正如已经指出的那样,它在SQL中是“=”,而不是“==”)

答案 5 :(得分:0)

如果他说这是一种最佳做法,我会要求他用SQL而不是C ++来证明这一点。由于99.9%的SQL代码(包括我们的代码,其他组织的代码,Microsoft帮助文件,SQL博客等)与您的开发人员做的相反,我会说违反了正常的期望。维护代码的开发人员是个坏主意。在SQL中,我们希望看到表单

WHERE CCY = 'USD'  

WHERE  'USD' = CCY  

因此,专业人士也会以这种方式编写代码,以确保维护者清楚。