Cognos中CONTAINS语句实现字符串匹配返回指定值的写法咨询
Cognos 子串匹配计算表达式实现方案
问题原因
之前编写的表达式无法生效,核心是缺少Cognos要求的完整条件判断语法结构,不能直接罗列条件 then 返回值的片段,必须套入标准的IF或CASE判断框架才能正常解析。Cognos原生的contains函数本身就支持匹配字符串任意位置的子串,带空格的场景(如freedom bell、apple fritter)不需要额外加通配符就能正常命中。
正确写法
方案1:IF语句实现(逻辑直观,推荐使用)
IF ([description] contains 'apple') THEN ('A') ELSE IF ([description] contains 'bell') THEN ('B') ELSE ('null')
方案2:CASE语句实现(效果与IF写法完全一致)
CASE WHEN [description] contains 'apple' THEN 'A' WHEN [description] contains 'bell' THEN 'B' ELSE 'null' END
匹配效果验证
对照给出的测试值,两种写法都能返回符合预期的结果:
- 对
applebee、appletart、apple fritter这类任意位置包含apple的字段值,返回"A" - 对
bellview、bellmont、freedom bell这类任意位置包含bell的字段值,返回"B" - 对
bird、coffin这类两个子串都不包含的字段值,返回"null"
注意:如果存在字段值同时包含
apple和bell的特殊场景(如apple bell),上述写法会按判断顺序优先返回"A",如果需要优先返回"B",调换两个判断条件的先后顺序即可。
内容的提问来源于stack exchange,提问作者Olendris63
相关产品推荐
相关产品推荐

