SQL选择将值分隔为多个列

时间:2017-05-30 20:01:40

标签: mysql woocommerce

我正在寻找一些指导,以确定如何将一个单元格的值分成多个列。不幸的是,这项任务的问题在于如何将数据放在数据库中。

现在,我有一个查询可以生成一个统一的值表。这是那个查询(为了简洁起见,我把它修剪了一下):

SELECT 
T1.order_item_id,
T2.order_item_id,
T2.order_id,

max(CASE 
    WHEN T1.meta_key = 'Address' and T2.order_item_id = T1.order_item_id 
    THEN T1.meta_value 
    END) as 'User Address'

FROM wp_woocommerce_order_itemmeta T1 
    LEFT JOIN wp_woocommerce_order_items T2 
    ON T1.order_item_id = T2.order_item_id 

GROUP BY 
T1.order_item_id,

这是它产生的表格:

 +-----------------------------------------------------+
 | order_item_id     | User Address                    |
 +-----------------------------------------------------+
 | 101               | 123 Fake St. Denver, CO USA     |                      
 +-----------------------------------------------------+

这最初是理想的,但现在我们需要将该地址分开,以便表格如下所示:

 +-------------------------------------------------------------+
 | order_item_id     | Address      | City   | State | Country |
 +-------------------------------------------------------------+
 | 101               | 123 Fake St. | Denver | CO    | USA     |                      
 +-------------------------------------------------------------+

坦率地说,我甚至不确定这是否可行。我在这里检查了几个解决方案,似乎有以下方法可以使用:

 SELECT 
       column_name,REVERSE(PARSENAME(REPLACE(REVERSE(column_name) ,' ' ,'.') ,1)) 
 AS address 1

但是由于数据如何保存到数据库中,我无法使用它来分隔值。

有没有办法使用max CASE语句执行此操作?

1 个答案:

答案 0 :(得分:0)

googlemaps中有一个名为reverse address lookup

的工具

您发送字符串并返回可能的位置。但是你必须为每次搜索付费。

获得latitud, longitud后,您可以为每个字段向下钻取图层Country,State,Street