Select 所有行如果@Parameter = NULL
Select all rows if @Parameter = NULL
我有一个带参数的存储过程,@PolicySymbol
,它可以接受多个值。为此,我使用了一个拆分字符串函数:StringOfStringsToTable
如果用户选择 @ControlNo
,那么无论为 @PolicySymbol
设置什么值,我都想为 controlNo
带来数据。
If @PolicySymbol
= NULL 我想为 controlNo
带来所有数据,无论它与什么政策符号相关。
这是代码示例:
CREATE TABLE #Test (ControlNo int, policy_symbol varchar(50))
INSERT INTO #Test
VALUES (1111, 'CSE'), (2222, 'PRE'), (3333, 'CSE'), (4444, 'GLG'),
(4444, 'PRE'), (4444, 'GLS')
DECLARE
@ControlNo int = 1111,
@PolicySymbol varchar(50) = NULL
SELECT DISTINCT ControlNo, policy_symbol
FROM #Test
WHERE ControlNo = COALESCE(@ControlNo, ControlNo)
-- here, if parameter @PolicySymbol IS NULL I want to include all policy symbols
AND policy_symbol IN (SELECT String FROM [dbo].[StringOfStringsToTable] (@PolicySymbol, ','))
DROP TABLE #Test
一个简单、合乎逻辑的 OR
就可以了。
WHERE ControlNo = COALESCE(@ControlNo, ControlNo)
-- If parameter @PolicySymbol IS NULL I want to include all policy symbols
AND (
@PolicySymbol IS NULL
OR policy_symbol IN (SELECT String FROM [dbo].[StringOfStringsToTable] (@PolicySymbol,','))
)
我有一个带参数的存储过程,@PolicySymbol
,它可以接受多个值。为此,我使用了一个拆分字符串函数:StringOfStringsToTable
如果用户选择 @ControlNo
,那么无论为 @PolicySymbol
设置什么值,我都想为 controlNo
带来数据。
If @PolicySymbol
= NULL 我想为 controlNo
带来所有数据,无论它与什么政策符号相关。
这是代码示例:
CREATE TABLE #Test (ControlNo int, policy_symbol varchar(50))
INSERT INTO #Test
VALUES (1111, 'CSE'), (2222, 'PRE'), (3333, 'CSE'), (4444, 'GLG'),
(4444, 'PRE'), (4444, 'GLS')
DECLARE
@ControlNo int = 1111,
@PolicySymbol varchar(50) = NULL
SELECT DISTINCT ControlNo, policy_symbol
FROM #Test
WHERE ControlNo = COALESCE(@ControlNo, ControlNo)
-- here, if parameter @PolicySymbol IS NULL I want to include all policy symbols
AND policy_symbol IN (SELECT String FROM [dbo].[StringOfStringsToTable] (@PolicySymbol, ','))
DROP TABLE #Test
一个简单、合乎逻辑的 OR
就可以了。
WHERE ControlNo = COALESCE(@ControlNo, ControlNo)
-- If parameter @PolicySymbol IS NULL I want to include all policy symbols
AND (
@PolicySymbol IS NULL
OR policy_symbol IN (SELECT String FROM [dbo].[StringOfStringsToTable] (@PolicySymbol,','))
)