我在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
的多行表值函数