Mysql SQL选择将值分隔为多列

Mysql SQL选择将值分隔为多列,mysql,woocommerce,Mysql,Woocommerce,我正在寻找一些关于如何将一个单元格的值分隔成多个列的指导。不幸的是,这个任务的问题在于如何将数据放在数据库中 现在,我有一个查询,它生成一个合并的值表。以下是该查询(为了简洁起见,我将其缩减了一点): 这是它生成的表格: +-----------------------------------------------------+ | order_item_id | User Address | +-----------------------

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

现在,我有一个查询,它生成一个合并的值表。以下是该查询(为了简洁起见,我将其缩减了一点):

这是它生成的表格:

 +-----------------------------------------------------+
 | 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语句来实现这一点?

谷歌地图上有一个叫做

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


一旦你有了一个
latitud,longitud
,你就可以深入到每个国家、州、街道的各个领域,问题是你会遵循什么逻辑?因为我现在看到你已经按照
拆分了另一个
,最后一个是空间。如果你所有的数据都有相同的模式,你可以做一些事情,但除非你有
纽约
南卡罗来纳州
按空间分割,否则事情就会破裂。我同意@JuanCarlosOropeza,除非你能描述出精确的逻辑(即,将句点之前的所有内容解析为第1列,将逗号之前的所有内容解析为第2列,然后将下一个空格之前的所有内容解析为第3列,以此类推。)那么你真的不能这么做。因为这并不能保证你的街道以句号结束,你的城市以逗号结束……而且你的数据中没有空格……你需要一个人参与。但至少你在数据库设计方面学到了很好的一课!如果你熟悉WooCommerce的数据存储过程,那么你可以得到州、市、c分别来自
\u billing\u state
\u billing\u city
\u billing\u country
的country
wp\u postETA。meta\u key
@JuanCarlosOropeza是需要有一个“、”或“.”才能解析的值。现在地址实际上有点混乱,下面是一个数据存储方式的实际示例:123Fake St Denver,CO 80227。@gffwebdev我每天都在处理这类数据。在没有人为干预的情况下,修复单个地址字段不是一个简单的方法。当我们从客户那里获得这类数据时,我们有一个团队来修复它。当然,我们有一些工具来帮助分离这些字段,但最终的决定是由一个人做出的。我的建议stion通过街道、州、国家等的单独字段解决输入问题。
 SELECT 
       column_name,REVERSE(PARSENAME(REPLACE(REVERSE(column_name) ,' ' ,'.') ,1)) 
 AS address 1