在现实生活中,往往会有一些你意向不到的需求,假设一张订单详情表,里面有ID,商品信息(包含购买的一件商品的所有信息,包括商品ID,价格...等),购买数量,单价等字段,如果有一个功能需要你把商品信息里的商品ID抽取出来,放到订单详情表里新建的一个商品ID字段,这时候,你该如何处理?
解决方案SQL脚本如下:
UPDATE t_ord_detail dtl
INNER JOIN (
SELECT
dtl_first.id,
CASE
WHEN LENGTH(dtl_first.prod_id) > 10 THEN
SUBSTR(
dtl_first.prod_id,
1,
LOCATE(',', dtl_first.prod_id) - 1
)
ELSE
dtl_first.prod_id
END prod_id
FROM
(
SELECT
id,
SUBSTR(
dtl.prod_info,
LOCATE('"prodId":', dtl.prod_info) + 9,
LOCATE(',"prodNo"', dtl.prod_info) - (
LOCATE('"prodId":', dtl.prod_info) + 9
)
) prod_id
FROM
t_ord_detail dtl
) dtl_first
) dtl_new ON dtl_new.id = dtl.id
SET dtl.prod_id = dtl_new.prod_id;