代码之家  ›  专栏  ›  技术社区  ›  Nick

变量前的值

  •  5
  • Nick  · 技术社区  · 16 年前

    我在看一些SQL代码,其中有一个这样的WHERE子句:

    WHERE 'USD' = CCY
    

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

    我以前从没见过这个。

    你有什么想法?

    6 回复  |  直到 16 年前
        1
  •  8
  •   APC    16 年前

    ER,C++不是SQL。没有 == 在SQL中,而在 WHERE 条款。

    我不确定它是否符合“最佳实践”,但有一个惯例将已知的价值放在右边。所以,在您的示例中,使用一个文本,

    WHERE CCY = 'USD' 
    
        2
  •  4
  •   Andrew    16 年前

    C++中最好的实践并不能使它在SQL中得到最佳的实践。查询优化器不关心,所以这只是一个偏好问题,但我不得不说,它不会是我的偏好,也不会是我自然编写它的方式。

        3
  •  2
  •   anon    16 年前

    从来没有在SQL中看到过,当然C++的推理不适用,因为'= '不是这个上下文中的赋值运算符。而且,很多C++程序员(包括我)不喜欢这种风格。

        4
  •  0
  •   Sarfraz    16 年前

    如果你看它:

    'USD' = CCY
    

    基本相同:

     CCY = 'USD'
    

    至于:

    这是最好的做法,阻止 从C++那里人们可以错误地 分配值而不是比较 忘记第二个相等 等于符号。

    好吧,我从来没有见过这种情况,如果这是那么重要的话,我们肯定会在某个地方看到这种情况,大多数人(如果不是所有人)都会练习这种情况。

        5
  •  0
  •   AdaTheDev    16 年前

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

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

        6
  •  0
  •   HLGEM    16 年前

    如果他说这是最好的实践,我会让他用SQL而不是C++源来证明这一点。由于我所读过的99.9%的SQL代码(包括我们的代码、其他组织的代码、Microsoft帮助文件、SQL博客等)与您的开发人员所做的相反,我认为违反开发人员维护代码的正常期望是个坏主意。在SQL中,我们希望看到

    WHERE CCY = 'USD'  
    

    不

    WHERE  'USD' = CCY  
    

    因此,专业人员也会以这种方式编写代码,以确保对维护人员来说是清楚的。

    推荐文章