首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合标识符

组合标识符
EN

Database Administration用户
提问于 2019-01-17 07:02:38
回答 1查看 85关注 0票数 0

我想在一列中识别那些存在于数据中的人,但是只有10个巢穴是有限的。对我来说,有什么更简单的方法来获得我想要的结果吗?

我希望你能帮我。

EN

回答 1

Database Administration用户

发布于 2019-01-17 08:37:28

您可以使用一个CASE表达式来实现这一点:

代码语言:javascript
复制
select a,b,c,d,
       case (a + b * 2 + c * 4 + d * 8)
          when 0 then 'none'
          when 1 then 'a'
          when 2 then 'b'
          when 4 then 'c'
          when 8 then 'd'
          when 3 then 'a-b'
          when 7 then 'a-b-c'
          when 5 then 'a-c'
          when 9 then 'a-d'
          when 6 then 'b-c'
          when 10 then 'b-d'
          when 14 then 'b-c-d'
          when 12 then 'c-d'
          when 15 then 'a-b-c-d'
          else 'error'
        end as present
from the_table;

这将为每个列创建一个具有一个位的“位集”,然后测试唯一标识每个组合的值。

这假设这些列中没有NULL值。

db<>fiddle上的在线示例

另一种选择可能是将表达式连接起来:

代码语言:javascript
复制
select concat(case when a = 1 then 'a-' end, 
              case when b = 1 then 'b-' end, 
              case when c = 1 then 'c-' end, 
              case when d = 1 then 'd-' end)
from the_table;

这在最后留下了一个丑陋的悬空-,但是您可能可以使用substring()和/或replace()调用的组合来删除它。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/227343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档