在SQL语句中选择比较结果

在SQL语句中选择比较结果,sql,Sql,我将如何实现以下目标: select (1 < 2) as One, (1 > 2) as Two 我使用的是SQL Server,但是一个跨DBMS的示例会很好。在Oracle中,您可以执行以下操作 SELECT CASE WHEN 1 < 2 THEN 'TRUE' ELSE 'FALSE' END AS ONE, CASE WHEN 1 >

我将如何实现以下目标:

select (1 < 2) as One, (1 > 2) as Two

我使用的是SQL Server,但是一个跨DBMS的示例会很好。

在Oracle中,您可以执行以下操作

SELECT CASE
         WHEN 1 < 2 THEN
           'TRUE'
         ELSE
           'FALSE'
       END AS ONE,
       CASE
         WHEN 1 > 2 THEN
           'TRUE'
         ELSE
           'FALSE'
       END AS TWO
  FROM DUAL;
选择案例
当1小于2时,则
“真的”
其他的
“假”
合二为一,,
案例
当1>2时,则
“真的”
其他的
“假”
一分为二
来自双重;
请注意,Oracle在数据库中没有布尔类型(与PL/SQL相反,后者有布尔类型),因此大小写表达式返回字符串


共享和享受。

假设这是SQL server,您可以使用语句

select (case when (1 < 2) then 'True' else 'False' end) as one,
       (case when (1 > 2) then 'True' else 'False' end) as two
from table
选择(当(1<2)时为“真”或“假”结束)作为一个,
(当(1>2)然后为'True'或'False'结束时的情况)为2
从桌子上
在条件的位置,您也可以使用任何变量或任何列值。基本上是一个表达式。

使用case语句:

declare @value1 int, @value2 int
set @value1 = 1
set @value2 = 2

select
case when (@value1 < @value2) then 'True' else 'False' end as One
case when (@value1 > @value2) then 'False' else 'True' end as Two
from table
声明@value1 int、@value2 int
设置@value1=1
设置@value2=2
选择
当(@value1<@value2)然后“True”或“False”作为一个结束时的情况
当(@value1>@value2)然后“False”或“True”以两个结尾时的情况
从桌子上

根据您的需要,您可以在值中硬编码,或者您可以在需要更改值时执行类似的操作。您还可以将case语句合并到一列中,或者将其拆分为小于或等于类型的比较。

许多人回答正确,我只想补充一点,在MySQL和PostgreSQL等无脑损伤的引擎中,您可以完全按照自己的方式编写。Oracle和MSSQL显然具有布尔类型,但仅在内部(作为比较运算符的结果),而不是可以从
SELECT
返回的数据类型。不知道为什么。@Amadan尝试这个有一个原因-它不在ANSI SQL规范中。甚至不在SQL-2003@Richard这是什么?我所理解的问题是,人们不能同意NULL扩展三元逻辑中逻辑运算的结果应该是什么-但我认为这是一个胡说八道的论点,因为事实上,比较的结果是布尔类型,这里是NULL,而且它确实需要以某种方式进行处理——在我看来,阻止直接返回结果是在掩盖事实。在SQL Server中,您甚至不需要from子句。@Dave-是的,您是对的。如果表达式引用了表中的列,则将使用来自的
declare @value1 int, @value2 int
set @value1 = 1
set @value2 = 2

select
case when (@value1 < @value2) then 'True' else 'False' end as One
case when (@value1 > @value2) then 'False' else 'True' end as Two
from table