mysql - SQL 更新 - 字符串拆分

标签 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

最佳答案

看起来列数(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, '');

关于mysql - SQL 更新 - 字符串拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6424835/

相关文章:

sql - 如何合并不同字段数据的计数

mysql - SQL 语句中一个对象的多个计数

SQL Server - 创建为数据库中的所有表运行的单个触发器

php - mysql查询为分组数据返回错误

MySQL - 更新两个表,无限查询

mysql - MySQL 中的多个连接

mysql - SQL索引优化WHERE查询

php - 表不存在 mysql 但存在 for 循环

php - 使用 foreach 根据另一个查询更新 mysql 数据库中的字段

MySQL IF...THEN 后跟查询语句