我有一个LIST_OF_PRODUCTS
表,其中包含:
Product ID Product Name Product Region
1 LG TV North;South;North East
2 Sony Bravia East;West
3 Samsung TV East;North East;South West
我想从表中拆分分隔的产品区域值并将它们设为单独的列,并根据其区域显示产品的可用性,因此我最终得到:
Product ID Product Name North South East West NorthEast SouthWest
1 LG TV 1 1 0 0 1 0
2 Sony Bravia 0 0 1 1 0 0
3 Samsung TV 0 0 1 0 1 1
我怎么能这样拆分出来?
答案 0 :(得分:1)
使用一系列案例,当陈述可以让你接近你想要的时候。
这看起来像这样:
select product_id, product_name,
case when instr(product_region,'North')>0 then 1 else 0 end as North,
case when instr(product_region,'East')>0 then 1 else 0 end as East,
case when instr(product_region,'South')>0 then 1 else 0 end as South,
case when instr(product_region,'West')>0 then 1 else 0 end as West,
from list_of_products;
哪里变得棘手的是你的区域枚举{北,东,南,西,东北,西北,东南,西南}没有正确回应简单的instr搜索 - 因为'北'匹配'北','东北'和'西北' - 因此您必须将您的区域枚举更改为不适合的方案。例如{North_,East_,South_,West_,NorthEast_,NorthWest_,SouthEast_,SouthWest_}它只需要是临时的,所以也许你可以通过某种子查询传递region字段。