我有一个SP,它有一个非常复杂的SQL语句,我需要能够将某些列与NULL进行比较,例如
...
FROM Categories
WHERE PID = @parentID
Run Code Online (Sandbox Code Playgroud)
@parentID
是一个SP参数,可以是有效的NULL.
PID
(父ID)uniqueidentifier
也可以是有效的NULL(顶级类别).我可以使用,SET ANSI_NULLS OFF
但文档说:
在SQL Server的未来版本中,ANSI_NULLS将始终为ON,并且将选项明确设置为OFF的任何应用程序都将生成错误.避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序.
什么可以是一个优雅的方式,而不是与重复相同的查询(S)IS NULL
的情况下@parentID=NULL
(也不能使用动态SQL):
IF @parentID IS NULL
SELECT...WHERE PID IS NULL
ELSE
SELECT...WHERE PID = @parentID
Run Code Online (Sandbox Code Playgroud)
编辑:我想避免一个IF
因为我讨厌重复(巨大)代码.
就像是:
select ..
FROM Categories
WHERE PID = @parentID or (PID is null and @parentID is null)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
259 次 |
最近记录: |