我正在寻找一些指导,以确定如何将一个单元格的值分成多个列。不幸的是,这项任务的问题在于如何将数据放在数据库中。
现在,我有一个查询可以生成一个统一的值表。这是那个查询(为了简洁起见,我把它修剪了一下):
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语句执行此操作?
答案 0 :(得分:0)
googlemaps中有一个名为reverse address lookup
的工具您发送字符串并返回可能的位置。但是你必须为每次搜索付费。
获得latitud, longitud
后,您可以为每个字段向下钻取图层Country,State,Street