如何基于列的内容在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