我提出了一个视图来抽象不同表的列并预过滤并对它们进行预排序.有一列其内容我不关心,但我需要知道内容是否为空.所以,我认为应该通过一个别名为" 真实的情况下,"这个规定列的值不为空和" 虚假的情况下,"价值是零.
如何用T-SQL选择这样的布尔值?
您必须为此使用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
我有一个类似的问题,我希望视图返回一个布尔列类型,基于实际列是否为null.我创建了一个用户定义函数,如下所示:
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
然后我创建的视图返回一个位列,而不是整数.
CREATE VIEW testView AS SELECT dbo.IsDatePopulated(DateDeleted) as [IsDeleted] FROM Company