当前位置:  开发笔记 > 数据库 > 正文

如何根据列的内容在T-SQL中输出布尔值?

如何解决《如何根据列的内容在T-SQL中输出布尔值?》经验,为你挑选了5个好方法。

我提出了一个视图来抽象不同表的列并预过滤并对它们进行预排序.有一列其内容我不关心,但我需要知道内容是否为空.所以,我认为应该通过一个别名为" 真实的情况下,"这个规定列的值不为空和" 虚假的情况下,"价值是零.

如何用T-SQL选择这样的布尔值?



1> Adam Bellair..:

您必须为此使用CASE语句:

SELECT CASE WHEN columnName IS NULL THEN 'false' ELSE 'true' END FROM tableName;


或者`CAST(当列名为IS NULL,然后0结束,结束为1)时,从tableName`执行
这会在我的视图上产生varchar(5)列,而不是布尔值.我究竟做错了什么?
@uffjohn在Sql中没有"true"或"false"这样的东西.通常它是1或0,一个"位"标志.如果你在.NET代码中使用它,你可以将这个值转换为布尔值.

2> 小智..:

或者你可以这样做:

    SELECT RealColumn, CAST(0 AS bit) AS FakeBitColumn FROM tblTable


这对我有用,特别是对于`CAST(当谓词<谓词>那么1节0结束时)).

3> Mahesh..:

如果需要输出作为布尔值

CAST(CASE WHEN colName IS NULL THEN 0  ELSE 1   END as BIT) aIsBooked



4> 小智..:

对于视图中的列,您可以使用类似的内容

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



5> lcrepas..:

我有一个类似的问题,我希望视图返回一个布尔列类型,基于实际列是否为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

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有