tipos - tipo de dato booleano en sql server
¿Cómo generar un booleano en T-SQL basado en el contenido de una columna? (6)
Hice una vista para abstraer columnas de diferentes tablas y prefiltrarlas y clasificarlas previamente. Hay una columna cuyo contenido no me importa, pero necesito saber si el contenido es nulo o no. Entonces mi vista debe pasar un alias como " verdadero " en caso de que el valor de esta columna especificada no sea nulo y " falso " en caso de que el valor sea nulo .
¿Es esto posible con T-SQL (Microsoft SQL Server 2000)?
¡Gracias por adelantado!
Si necesita una salida como booleana
CAST(CASE WHEN colName IS NULL THEN 0 ELSE 1 END as BIT) aIsBooked
para la columna en la vista puede usar algo como
CASE WHEN ColumnName is not null THEN ''True'' ELSE ''False'' END
o en una declaración
SELECT
s.ID,
s.[Name],
CASE WHEN s.AchievedDate is not null THEN ''True'' ELSE ''False'' END [IsAchieved]
FROM Schools s
o para un posterior procesamiento después yo personalmente usaría
SELECT
s.ID,
s.[Name],
CASE WHEN s.AchievedDate is not null THEN 1 ELSE 0 END [IsAchieved]
FROM Schools s
Tienes que usar una declaración CASE para esto:
SELECT CASE WHEN columnName IS NULL THEN ''false'' ELSE ''true'' END FROM tableName;
Tuve un problema similar en el que quería que una vista devolviera un tipo de columna booleana en función de si una columna real es nula o no. Creé una función definida por el usuario así:
CREATE FUNCTION IsDatePopulated(@DateColumn as datetime)
RETURNS bit
AS
BEGIN
DECLARE @ReturnBit bit;
SELECT @ReturnBit =
CASE WHEN @DateColumn IS NULL
THEN 0
ELSE 1
END
RETURN @ReturnBit
END
Entonces, la vista que creé devuelve una columna de bit, en lugar de un número entero.
CREATE VIEW testView
AS
SELECT dbo.IsDatePopulated(DateDeleted) as [IsDeleted]
FROM Company
O puedes hacer esto:
SELECT RealColumn, CAST(0 AS bit) AS FakeBitColumn FROM tblTable
Usted pidió booleano, que llamamos bit en t-sql.
Otras respuestas te han dado un varchar ''verdadero'' y ''falso'' o 1 y 0. ''verdadero'' y ''falso'' son obviamente varchar, no booleanos. Creo que 1 y 0 se lanzarán como un número entero, pero ciertamente no es un poco. Esto puede parecer quisquilloso, pero los tipos importan bastante a menudo.
Para obtener un valor de bit real, debe emitir su salida de forma explícita de la siguiente manera:
Seleccione el caso cuando tableName.columnName ES NULL y luego cast (0 como bit) else cast (1 como bit) END como ColumnLabel from tableName