我确信这有一个非常简单的答案我没有找到...我在数据库中有一个简单的层次结构,其中每一行都有一个ParentId.如果ParentId IS NULL,则它是根元素.我有存储过程:
CREATE PROCEDURE GetByParent @parentId int
AS BEGIN SELECT * FROM TABLE1 WHERE ParentId = @parentId END
Run Code Online (Sandbox Code Playgroud)
如果我发送一个整数,它工作正常,但如果我发送NULL它变成ParentId = NULL,这在ANSI中不起作用.我知道有COALESCE(@parentId, ParentId),但是返回所有行时@parentId IS NULL.我可以做一个IF ELSE语句并复制查询(一个= @parentId和另一个IS NULL),但我确信有更好的方法.
在单独的条件中处理NULL情况:
SELECT *
FROM TABLE1
WHERE ParentId = @parentId
OR (ParentId IS NULL AND @parentId IS NULL)
Run Code Online (Sandbox Code Playgroud)