带子查询的sql中的可选参数

eanckbw9  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(315)

给定以下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
)

我做错什么了?
谢谢
卡尔

4szc88ey

4szc88ey1#

你有两个 ELSE 第一个应该是 WHEN 相反。但我认为用布尔逻辑更容易表达:

AND (
    @ficode = '' 
    OR @ficode IN (SELECT value FROM STRING_SPLIT(r.fi_code, ','))
(

相关问题