SQL Server将子查询替换为@参数



我在WHERE 中有follow子查询

AND (
EXISTS (
SELECT 1
FROM SHEMA.TABLE c
CROSS APPLY [SHEMA].[Split](';', c.Configuration) s
WHERE c.Id = ISNULL(@ConfigId, 1)
AND LEFT(s.Value, CHARINDEX(',', s.Value, 0) - 1) = RCC.ReportGroupComponentsId
AND RIGHT(Value, LEN(Value) - CHARINDEX(',', Value, 0)) = RCC.ReportComponentsId
)
OR RCC.Id IS NULL
)

如何将SHEMA.TABLE的读取替换为字符串参数,该参数将包含拆分所需的所有数据?

参数的格式为'1315,1609;1315,250;1315,251;1315,252'

总的来说,我想你想要:

AND EXISTS(SELECT 1
FROM (VALUES(@parameter))c(Configuration)
CROSS APPLY [SHEMA].[Split](';', c.Configuration) s
WHERE...) --without c.Id = ISNULL(@ConfigId, 1) as C.Id doesn't exist

附带说明,我希望您的对象[SHEMA].[Split]是一个内联表值函数,而不是带有WHILE的多行表值函数

最新更新