我有关于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
答案 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, '');