给定以下sql中的可选参数,我尝试执行以下操作:如果@ficode是空字符串,那么我希望忽略该参数。但是,如果它包含一个值,那么我想看看它是否在这个子查询生成的列表中:select value from string \u split(r.bo \u type,,')
SELECT * --d.boclient_id, r.doc_id
FROM @tab_Rules r, @BOData d
WHERE d.bo_type IN (SELECT value FROM STRING_SPLIT(r.bo_type, ','))
AND 1 =
(
CASE
WHEN @fiCode = '' THEN 1
ELSE @fiCode <> '' AND @fiCode IN (SELECT value FROM STRING_SPLIT(r.fi_code, ',')) THEN 1
ELSE 0
END
)
我做错什么了?
谢谢
卡尔
1条答案
按热度按时间4szc88ey1#
你有两个
ELSE
第一个应该是WHEN
相反。但我认为用布尔逻辑更容易表达: