2011-01-13 40 views
7

Mi pregunta es un poco más genérica, pero digamos que quiero probar algunas expresiones en SQL Server. Escribo SELECT 1=1 o SELECT 'a' > 'B' y presiono F5, esperando ver el resultado, como hago cuando escribo SELECT 0, 1.
Pero recibo un error en su lugar. ¿Porqué es eso? ¿Qué debería usar para evaluar esas expresiones sobre la marcha?SELECCIONAR 1 = 1 no funciona

Respuesta

17

SQL Server no tiene un tipo de datos booleanos.

Usted tendría que utilizar SELECT CASE WHEN 1=1 THEN 1 ELSE 0 END

+0

+1 ¿No hay ningún tipo de datos booleanos? Nunca me di cuenta de eso. Estoy muy sorprendido, pero tiene sentido ya que siempre utilicé un poco de datos booleanos, y su respuesta ya tiene 7 votos ... –

1

Se puede usar un declaración de caso:

select case when 1=1 then 'true' else 'false' end 
select case when 'a'>'B' then 'true' else 'false' end 

o un IF ... ELSE

if 1=1 
    select 'true' 
else 
    select 'false' 

if 'a' > 'B' 
    select 'true' 
else 
    select 'false' 
+0

¿Por qué el voto a favor de una respuesta válida? De hecho, la primera mitad de mi respuesta es la misma que la respuesta actual más votadas. –

13

forma más sencilla es select 1 where <test expression here>

1

Puede poner su expresión después de where como esto

select 'true' where 1=1 
select 'true' where 1<>1 

de ustedes podría ponerlo en una instrucción IF

IF 1+1=2 
BEGIN 
    PRINT 'One and one makes two.' 
END 
0

Se puede utilizar el siguiente para convertir la salida de la comparación a la pseudo-booleano:

select isnull((select 'false' where not(1**0=1**)) ,'true') 

o, para tener un int como retorno:

select isnull((select 1 where 1<1) ,0) 
Cuestiones relacionadas