在sql中使用类似的通配符进行通配符

63lcw9qa  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(434)

我有3个类别:
幸福的
悲哀的
快乐+悲伤

Id  Code
 1  03FJ
 1  03JO
 3  03PR
 4  03OY
 4  036X
 4. 03JX

当代码类似于“%03j”,但没有任何其他“%03”值时,它就很高兴了。
当代码类似于“%03”但没有任何“%03j”值时,这是悲哀的。
当代码类似于“%03”并且有其他“%03j”值时,则为happy+sad
上述的预期输出为

Id Emotion
1  Happy
3  Sad
4. Happy + Sad

我该怎么做?在通配符基本相同的情况下,我不确定如何捕捉到这一点。

cig3rfwq

cig3rfwq1#

可以使用聚合。最新版本的sql server支持 concat_ws() :

select id,
       concat_ws(' + ',
                 (case when sum(case when code like '%03%J%' then 1 else 0 end) > 0
                       then 'Happy'
                  end),
                 (case when sum(case when code not like '%03%J%' then 1 else 0 end) > 0
                       then 'Sad'
                  end)
                 ) as emotion
from t
group by id;

您可以在旧版本的SQLServer中使用 case 表达式或其他方法。

相关问题