SQL Update - 字符串拆分

时间:2011-06-21 11:56:52

标签: mysql sql

我有关于SQL的问题。如何拆分带有分隔符''字符的字符串并访问这些部分以更新行? ..要澄清:

表格如下:

Products ( Name, Colors,         Data1, Data2, Data3)
              a  red green blue
              b  white black

我想做类似的事情:

Products ( Name, Colors,         Data1, Data2, Data3)
              a  red green blue    red  green  blue
              b  white black     white  black

2 个答案:

答案 0 :(得分:2)

明智的解决方案是创建至少一个表:

product
=======

product_id (PK)
product_name

color
=====

color_id (PK)
product_id (FK to product.product_id)
color_name

答案 1 :(得分:2)

看起来列数(Data1,Data2,Data3)不是动态的。

所以我假设“颜色”字段最多可以包含三个以空格分隔的单词。

然后,快速而又脏的方法是编写一系列更新语句,如下所示:

UPDATE Products SET Data1 = get_color(Colors, ' ', 1);

UPDATE Products SET Data2 = get_color(Colors, ' ', 2);

UPDATE Products SET Data3 = get_color(Colors, ' ', 3);

其中get_color将是一个自定义函数,它返回给定字符串中的第n个单词:

CREATE FUNCTION get_color(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');