我正在查看一些SQL代码,其中有一个像这样的WHERE子句:
WHERE USD = CCY
我询问了这位写作者为什么将值放在左侧,他说这是最佳实践,起源于C ++,人们可能会忘记第二个等号而错误地赋值而不是比较相等。
我从未看到过这一点。
你有什么想法?
我正在查看一些SQL代码,其中有一个像这样的WHERE子句:
WHERE USD = CCY
我询问了这位写作者为什么将值放在左侧,他说这是最佳实践,起源于C ++,人们可能会忘记第二个等号而错误地赋值而不是比较相等。
我从未看到过这一点。
你有什么想法?
嗯,C ++不是SQL。 SQL中没有 == code>,也没有将赋值分配给
WHERE code>子句。
我不确定这是否符合“最佳实践”,但有一个惯例,将已知值放在右侧。因此,对于像您的示例中的文字,应该是:
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
因此,专业人士也会以这种方式编写代码,以确保维护人员能够清晰理解。
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 ...
I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域
We have a restaurant table that has lat-long data for each row. We need to write a query that performs a search to find all restaurants within the provided radius e.g. 1 mile, 5 miles etc. We have ...
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
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 ...
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 ...
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 ...
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: ...