比较运算符(>,<,> =,< =,!=)是否可以在select子句中用于SQL中的列计算?例如,
SELECT column1, column2, column1 >= column2 AS "column3" FROM table
。
似乎只有部分数据库支持比较运算符,例如MS Access。我正在使用ODBC连接到不同的数据库,我知道的一种方法是使用"CASE...WHEN...THEN...ELSE"
子句。问题是,我是否可以使用select子句中的比较运算符来计算新列?
另一个问题是,如果我想使用新的计算列(示例中的“column3”)来过滤WHERE
子句中的某些数据,那么SQL应该如何?
答案 0 :(得分:1)
您说得对 - 所有数据库都不支持此比较语法。但是大多数流行的开源数据库:MySQL(SQLFiddle链接),PostgreSQL和SQLite都支持它。
CASE a>b THEN 1 ELSE 0 END
作为一种解决方法(这也适用于之前提到的所有数据库)。
关于在WHERE子句中使用新列的问题:通常,除非在内部SELECT周围再包装一个外部SELECT,并在外部SELECT中使用另一个WHERE,否则不能这样做。