MySQL工作台:拆分字符串函数
我一直在尝试将“orders”字符串拆分为一个新的表行,该行位于其相应的“order\u id”后面 原始列所在的表名称为“customer\u order” 由此MySQL工作台:拆分字符串函数,sql,mysql-workbench,Sql,Mysql Workbench,我一直在尝试将“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
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
我使用的是SQL Workbench,在过去的两天里,我尝试了一些不同的方法来搜索互联网,比如
select order_id, Value
from customer_order
cross apply STRING_SPLIT (orders, ',');
我不熟悉SQL和编写代码,我知道我不擅长。我一直在绞尽脑汁想弄明白它,但我似乎就是弄不好,我总是以语法错误告终
难道没有人知道我为什么不能让它工作吗?我知道我做错了什么,但我一直试图找出我把事情搞砸的地方,但失败了你可以使用下面的查询
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
选择
订单号:,
子字符串索引(子字符串索引(顺序,,,,n.数字+1),,,,,-1)颜色
从…起
客户订单
内连接
(选择0位数的UNION ALL
选择1“全部联合”
选择2“全部联合”
选择3个“联合所有”
选择4个“全部联合”
选择5)n
关于长度(替换(订单,,,,,),您的MySQL版本是什么?