English 中文(简体)
变量之前的价值 (biànliàng zhīqián de jiàzhí)
原标题:Value before variable

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

WHERE  USD  = CCY

我询问了这位写作者为什么将值放在左侧,他说这是最佳实践,起源于C ++,人们可能会忘记第二个等号而错误地赋值而不是比较相等。

我从未看到过这一点。

你有什么想法?

最佳回答

嗯,C ++不是SQL。 SQL中没有 == ,也没有将赋值分配给 WHERE 子句。

我不确定这是否符合“最佳实践”,但有一个惯例,将已知值放在右侧。因此,对于像您的示例中的文字,应该是:

WHERE CCY =  USD  
问题回答

在C ++中的最佳实践并不能成为SQL中的最佳实践。查询优化器不会关心,所以只是个人偏好问题,但我必须说这不是我的偏好或自然写作方式。

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

如果你看它:

 USD  = CCY

基本相同:

 CCY =  USD 

至于:

it s best practice to do so, stemming from C++ where people could mistakenly assign the value instead of comparing equality by forgetting the second equals sign.

我从未见过发生这种情况,如果这很重要的话,我们肯定会在某个地方看到这种情况,并且绝大多数人如果不是所有人都会这样做。

我个人不会这样做,但我会把列名放在左侧,因为这对于在 SQL 查询中更易读/更容易跟随。

我很少看到反过来做,认为给出的理由对SQL并不适用(正如已经指出的那样,SQL中是“=”而不是“==”)

如果他说这是最佳实践,我会让他用SQL而不是C++源代码证明。因为我阅读过的99.9%的SQL代码(包括我们的代码、其他组织的代码、Microsoft帮助文件、SQL博客等)都与开发人员相反,我会说违反维护代码的开发人员的正常期望是一个不好的想法。在SQL中,我们期望看到以下形式。

WHERE CCY =  USD   

不要

WHERE   USD  = CCY  

因此,专业人士也会以这种方式编写代码,以确保维护人员能够清晰理解。





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

难以执行 REGEXP_SUBSTR

I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域

SQL Query Shortcuts

What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

Running numbers in SQL

I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...