mysql工作台:拆分字符串函数

axzmvihb  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(274)

我一直在尝试将“orders”字符串拆分为一个新的表行,该行跟随其相应的“order\u id”
原始列所在的表名称为“customer\u order”
从这里;

order_id| orders   
      2837| motor, wheel, seat, battery, belt, glass    
      2394| belt
      9283| glass, seat, motor

对此;

order_id| split_orders   
       2837| motor    
       2837| wheel   
       2837| seat    
       2837| battery
       2837| belt    
       2837| glass
       2394| belt
       9283| glass
       9283| seat
       9283| motor

我使用的是sqlworkbench,在过去的两天里,我尝试了几种不同的方法来搜索互联网,比如;

select order_id, Value 
from customer_order
cross apply STRING_SPLIT (orders, ',');

我对sql和编写代码还不熟悉,我知道我不擅长。我一直在绞尽脑汁想弄清楚,但我似乎弄不好,我总是以语法错误告终
难道没有人知道我为什么不能让它工作吗?我知道我做错了什么事,但我一直在努力,却没有弄清楚我把事情搞砸了

3phpmpom

3phpmpom1#

您可以使用下面的查询

SELECT
  order_id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(orders, ', ', n.digit+1), ', ', -1) color
FROM
  customer_order
  INNER JOIN
  (SELECT 0 digit UNION ALL 
   SELECT 1 UNION ALL 
   SELECT 2 UNION ALL 
   SELECT 3 UNION ALL 
   SELECT 4 UNION ALL 
   SELECT 5) n
  ON LENGTH(REPLACE(orders, ',' , '')) <= LENGTH(orders)-n.digit
ORDER BY
  order_id,
  n.digit

在这里查看演示。
这将只适用于多达5个由逗号分隔的顺序。你必须增加 UNION ALL 如果列表中有5个以上的字符串。

相关问题