当我们按预期获得值时,以下代码可以正常工作
case Criteria
when ''Security_Agent'' then substring(criteriavalue,charindex(''['',criteriavalue,8)+1,charindex('']'',criteriavalue,14)-charindex(''['',criteriavalue,8)-1)
when ''Agent'' then substring(criteriavalue,charindex(''['',criteriavalue,8)+1,charindex('']'',criteriavalue,14)-charindex(''['',criteriavalue,8)-1)
when ''Arranger'' then substring(criteriavalue,charindex(''['',criteriavalue)+1,charindex('']'',criteriavalue)-charindex(''['',criteriavalue)-1)
when ''Group'' then criteriavalue
else substring(criteriavalue,charindex(''['',criteriavalue)+1,charindex('']'',criteriavalue)-charindex(''['',criteriavalue)-1)
end as CriteriaValue
但是在某些情况下,上面的CRITERIAVALUE变为空白/ NULL。
如何更改以上内容,以便在不为null时显示值(表示CRITERIAVALUE字段)。为null时,忽略SUBSTRING
答案 0 :(得分:2)
选项1: 在CASE中添加WHEN语句作为第一个评估,以单独输出NULL。
127.0.0.1
选项2:
如果您想用静态文本值替换空值,请使用WHEN CriteriaValue IS NULL then 'WHATEVER YOU WANT NULLS TO BE'
代替所有ISNULL(CRITERIAVALUE,'Some Text Here')
。
答案 1 :(得分:0)
在检查条件之前检查条件值
case when criteriavalue is not null then
case Criteria
when ''Security_Agent'' then substring(criteriavalue,charindex(''['',criteriavalue,8)+1,charindex('']'',criteriavalue,14)-charindex(''['',criteriavalue,8)-1)
when ''Agent'' then substring(criteriavalue,charindex(''['',criteriavalue,8)+1,charindex('']'',criteriavalue,14)-charindex(''['',criteriavalue,8)-1)
when ''Arranger'' then substring(criteriavalue,charindex(''['',criteriavalue)+1,charindex('']'',criteriavalue)-charindex(''['',criteriavalue)-1)
when ''Group'' then criteriavalue
else substring(criteriavalue,charindex(''['',criteriavalue)+1,charindex('']'',criteriavalue)-charindex(''['',criteriavalue)-1)
end
end as CriteriaValue
答案 2 :(得分:0)
您也可以像下面这样使用iif
:
case Criteria
when ''Security_Agent'' then substring(criteriavalue,charindex(''['',criteriavalue,8)+1,charindex('']'',criteriavalue,14)-charindex(''['',criteriavalue,8)-1)
when ''Agent'' then substring(criteriavalue,charindex(''['',criteriavalue,8)+1,charindex('']'',criteriavalue,14)-charindex(''['',criteriavalue,8)-1)
when ''Arranger'' then substring(criteriavalue,charindex(''['',criteriavalue)+1,charindex('']'',criteriavalue)-charindex(''['',criteriavalue)-1)
when ''Group'' then criteriavalue
else iif(criteriavalue IS NULL, NULL, substring(criteriavalue,charindex(''['',criteriavalue)+1,charindex('']'',criteriavalue)-charindex(''['',criteriavalue)-1))
end as CriteriaValue