更短的CASE ISNULL(qry,'')=''那么'没有'ELSE'是'结束

问题描述 投票:1回答:2

是否有更短/更好的方法来编写此SQL语句?

编辑:内部sql select语句是占位符,实际语句比较复杂。

SELECT
    CASE WHEN
        ISNULL((SELECT TOP 1 x FROM y), '') = ''
    THEN 'No'
    ELSE 'Yes'
    END AS BooleanValue

它感觉非常kludgey因为它将select语句的结果与null进行比较,然后如果为null则设置为空字符串;只是为了检查它是否为空字符串,并将其设置为实际需要的字符串:“是”或“否”字符串。

sql sql-server case isnull
2个回答
2
投票

这是一种更清洁的方法。

SELECT
    CASE WHEN
        (SELECT TOP 1 x FROM y) IS NULL
    THEN 'No'
    ELSE 'Yes'
    END AS BooleanValue

这将删除一个额外的命令,并应具有相同的输出。我刚刚在sql server 2012中测试过它。


1
投票
SELECT ISNULL((SELECT TOP 1 'Yes' FROM x), 'No') as Boolean
© www.soinside.com 2019 - 2024. All rights reserved.