我正在查看一些SQL代码,它有一个像这样的WHERE子句:
WHERE 'USD' = CCY
我问作者为什么把价值放在左边,他说这是最好的做法,源于C ++,人们可能错误地分配价值,而不是通过忘记第二个等号来比较平等。 / p>
我以前从未见过这个。
你有什么想法?
答案 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
因此,专业人士也会以这种方式编写代码,以确保维护者清楚。