使用SELECT进行简单的BOOLEAN评估

时间:2011-12-02 14:45:52

标签: mysql sql sql-server

我想测试一些评估而不需要在任何表上工作。 例如,您可以写

SELECT 1+1
>2

我想实现这样的目标:

SELECT 2 > 1
>FALSE

我知道大多数引擎都不具备布尔数据类型的概念,但我不知道它们的内部工作方式(即使我猜测所有内容<> 0都是{{1} ,就像在C)。无论如何,回复的格式确实无关紧要,无论是true还是true/false

6 个答案:

答案 0 :(得分:13)

SELECT CASE WHEN 2 > 1 THEN 'True' ELSE 'False' END

答案 1 :(得分:5)

SELECT
  CASE
    WHEN 2 > 1 THEN 1
    ELSE 0
  END

答案 2 :(得分:4)

SELECT CASE WHEN 2 > 1 THEN cast(0 as bit) ELSE cast(1 as bit) END

答案 3 :(得分:3)

修改

SQL Server 2012(Denali):

SELECT IIF(2 > 1, 'TRUE', 'FALSE')

答案 4 :(得分:1)

在Mysql和Oracle中,显然是SQL-Server,你可以使用nullif(忽略SQL Server的from dual)所以,假设你将null视为true,那么你可以用这种方式处理相等的测试没有凌乱的案件陈述或不得不处理字符串。

SQL> select nullif(1,0) from dual;

NULLIF(1,0)
-----------
          1

SQL> select nullif(1,1) from dual;

NULLIF(1,1)
-----------

SQL>

答案 5 :(得分:0)

只需使用:

SELECT expr1 condition expr2

例如

SELECT 1 < 2 # returns 1

如果条件计算结果为true,则返回1,否则返回0。

已成功测试:

  • MariaDB 10.1
  • MySQL 5.7(Percona XtraDB群集)