当桶不相互排斥时,相当于桶用户的情况?

时间:2017-08-07 19:54:47

标签: sql

当存储桶不一定是互斥的时候,将数据存储到SQL中的类别的最佳方法是什么?

当使用正常情况下的语句时,数据在其符合条件的第一个类别中被删除,并且在其他存储桶中不被考虑,在语句的情况下,它也可以符合条件。我希望能够将数据存储到所有可能的类别中。

例如,假设我们有字符串'ABC'。我想用桶分类这个字符串'String contains A','String contains B','String contains D'。我的代码类似于以下内容:

Select case 
when string like '%A%' then 'String_Contains_A'
when string like '%B%' then 'String_Contains_B'
when string like '%D%' then 'String_Contains_D'
else 'Other'
end as bucket,
String 
from datatable 
where string = 'ABC'

根据我现在的理解,似乎字符串'ABC'只能用桶'String_Contains_A'分类,而不能用'String_Contains_B'分类。在“String_Contains_A”和“String_Contains_B”桶下对字符串进行分类的最有效方法是什么。谢谢!

2 个答案:

答案 0 :(得分:1)

联合查询可以正常工作

select 'bucket1' bucket, other fields
from etc
where whatever
union all
select 'bucket2' bucket, other fields
from etc
where whatever
etc

答案 1 :(得分:0)

您可以使用标志而不是名称:

Select string,
       (case when string like '%A%' then 1 else 0 end) as String_Contains_A,
       (case when string like '%B%' then 1 else 0 end) as String_Contains_B,
       (case when string like '%D%' then 1 else 0 end) as String_Contains_D
from datatable 
where string = 'ABC';