当存储桶不一定是互斥的时候,将数据存储到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”桶下对字符串进行分类的最有效方法是什么。谢谢!
答案 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';