2011-12-02 33 views
6

Quiero probar algunas evaluaciones sin trabajar en ninguna tabla. Por ejemplo, puede escribirUsando SELECT para la evaluación BOOLEAN simple

SELECT 1+1 
>2 

que quiero lograr algo como esto:

SELECT 2 > 1 
>FALSE 

sé que la mayoría de los motores no tienen el concepto de un tipo de datos booleano, pero yo don' Sé cómo su trabajo interno (incluso si supongo que todo <> 0 es true, como en C). De todos modos, el formato de la respuesta realmente no importa, ya sea true/false o 0/1

+4

Oh lo mucho que desear SQL tenía un tipo booleano real ... –

Respuesta

12
SELECT CASE WHEN 2 > 1 THEN 'True' ELSE 'False' END 
4
SELECT 
    CASE 
    WHEN 2 > 1 THEN 1 
    ELSE 0 
    END 
4
SELECT CASE WHEN 2 > 1 THEN cast(0 as bit) ELSE cast(1 as bit) END 
3

Editar:

SQL Server 2012 (Denali):

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

me gustaría esta solución mucho, pero no parece funcionar en mi servidor SQL 2008 – Raffaele

+0

mi culpa, es a partir de 2012 : - /, he estado leyendo al respecto ayer ([Denali - Función lógica - IIF() - A Introducción rápida] (http://blog.sqlauthority.com/2011/09/10/sql-server-denali- logical-function-iif-a-quick-introduction /)) y me olvido de la versión. –

1

En Mysql y Oracle y aparentemente SQL-Server puede u se nullif (ignore from dual para SQL-Server) por lo que, suponiendo que tome null como verdadero, entonces puede tratar con pruebas de igualdad de esta manera sin una declaración de caso desordenada o tener que lidiar con cadenas.

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

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

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

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

SQL> 
+0

No conocía esta construcción. Buen punto – Raffaele

Cuestiones relacionadas