0

比较运算符(>、<、>=、<=、!=)可以用在 SQL 中列计算的 select 子句中吗?例如,

SELECT column1, column2, column1 >= column2 AS "column3" FROM table.

似乎只有一些数据库支持比较运算符,例如 MS Access。我正在使用 ODBC 连接到不同的数据库,我知道的一种方法是使用"CASE...WHEN...THEN...ELSE"子句。问题是,是否有另一种方法可以在 select 子句中使用比较运算符来计算新列?

另一个问题是,如果我想使用新的计算列(示例中的“column3”)过滤WHERE子句中的一些数据,SQL 应该是什么样子?

4

1 回答 1

1

你是对的——并非所有数据库都支持这种比较语法。但最流行的开源数据库:MySQL(SQLFiddle 链接)、PostgreSQLSQLite都支持它。

MSSQLOracle上,您应该使用

CASE a>b THEN 1 ELSE 0 END

作为一种解决方法(这也适用于前面提到的所有数据库)。

关于在 WHERE 子句中使用新列的问题:通常,您不能这样做,除非您在内部 SELECT 周围再包装一个外部 SELECT,并在外部 SELECT 中使用另一个 WHERE。

于 2013-02-05T05:59:53.253 回答