如何基于列的内容在T-SQL中输出布尔值?
我提出了对不同表格的抽象列进行预过滤和预先分类的观点。 有一列的内容我不在乎,但我需要知道内容是否为空。 所以我的观点应该传递一个别名为“ 真 ”,如果这个指定的列的值不为空,并且在值为空的情况下为“ 假 ”。
这可能与T-SQL(Microsoft SQL Server 2000)?
提前致谢!
你必须使用CASE语句:
SELECT CASE WHEN columnName IS NULL THEN 'false' ELSE 'true' END FROM tableName;
或者你可以这样做:
SELECT RealColumn, CAST(0 AS bit) AS FakeBitColumn FROM tblTable
如果你需要一个输出作为布尔值
CAST(CASE WHEN colName IS NULL THEN 0 ELSE 1 END as BIT) aIsBooked
在视图中的列可以使用类似的东西
CASE WHEN ColumnName is not null THEN 'True' ELSE 'False' END
或在声明中
SELECT s.ID, s.[Name], CASE WHEN s.AchievedDate is not null THEN 'True' ELSE 'False' END [IsAchieved] FROM Schools s
或者以后我会亲自使用
SELECT s.ID, s.[Name], CASE WHEN s.AchievedDate is not null THEN 1 ELSE 0 END [IsAchieved] FROM Schools s
我有一个类似的问题,我想要一个视图返回一个布尔列types的基础上,如果一个实际的列为null或不。 我创build了一个用户定义的函数如下所示:
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
然后,我创build的视图返回一个位列,而不是一个整数。
CREATE VIEW testView AS SELECT dbo.IsDatePopulated(DateDeleted) as [IsDeleted] FROM Company
你问了布尔型,我们在t-sql中调用它。
其他答案要么给你一个varchar“真”和“假”或1和0.“真”和“假”显然是varchar,而不是布尔值。 我相信1和0会被当作一个整数,但肯定不是一点点。 这可能看起来挑剔,但types很重要。
为了得到实际的位值,你需要明确的输出你的输出,有点像:
当tableName.columnName为空时,select大小写然后强制转换(0作为位)else cast(1作为位)从tableName的ColumnLabel