SQL Server ISNULL/Coalesce仍然返回空列表

Con*_*orU 1 sql sql-server select coalesce

我有一个名为Users一个名为Limit包含整数值的列的表.每个用户都有一个限制,但未注册的用户的默认限制为1.

我想运行一个简单的查询,告诉我该限制的用户,如果他们注册或默认为1,如果他们不是注册用户,但是当我运行一个查询与任一ISNULLCoalesce如下记载:

SELECT coalesce(Limit,1) AS limit 
FROM User 
WHERE userID = 'testUser'
Run Code Online (Sandbox Code Playgroud)

如果我查询现有用户,查询将正常工作,但如果我尝试未注册的用户将返回一个空列表[它应该返回值为1的单行].

使用ISNULL而不是合并产生相同的结果.我发现的每个例子ISNULL和合并都是这样的.我错过了什么?

Mur*_*nik 6

coalesce对返回值进行操作,并评估是否null存在.在你的情况下,一个不存在的只是没有一行,所以,正如你所说,它将无法正常工作.

但是,您可以使用左连接模拟此行为:

SELECT    COALESCE(b_limit, a_limit) AS limit
FROM      (SELECT 1 AS a_limit) a
LEFT JOIN (SELECT limit AS b_limit
           FROM   user
           WHERE  userID = 'testUser') b ON 1 = 1
Run Code Online (Sandbox Code Playgroud)