可以在select子句中使用比较运算符来进行SQL中的列计算吗?

时间:2013-02-05 05:41:01

标签: sql odbc

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

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

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

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

1 个答案:

答案 0 :(得分:1)

您说得对 - 所有数据库都不支持此比较语法。但是大多数流行的开源数据库:MySQL(SQLFiddle链接),PostgreSQLSQLite都支持它。

MSSQLOracle上,您应该使用

CASE a>b THEN 1 ELSE 0 END

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

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