这里有张桌子
CREATE TABLE `table1` (
...
`prm` TEXT NULL DEFAULT NULL,
`size` TEXT NULL DEFAULT NULL,
`gender` TEXT NULL DEFAULT NULL,
`color` TEXT NULL DEFAULT NULL,
...
) ENGINE=InnoDB;
prm 字段包含以下文本数据:
Размер:XL|Цвет:Белый|Пол:female
Размер:M|Цвет:Черный|Пол:male
Размер:L|Пол:female
...
需要将从prm字段中“拉取”的对应值输入到size、gender、color文本字段中。结果,结果应该是这样的:
size|gender|color
XL|Белый|female
M|Черный|male
L|NULL|female
这里值得澄清的是,param 字段不一定包含所有数据(例如,与最后一个条目一样)。
如何更优雅地解决这个问题?到目前为止,只想到了带有一堆嵌套 SUBSTRUNG 和 LOCATE 的繁琐 UPDATE 构造以及 @ 变量。
参数名称(也是其值的前缀)看起来像
Параметр:. 参数值以字符|或行结尾结束。所以提取这个值,知道限制它的子字符串,很容易:特别是对于显示的原始数据:
小提琴
更简单地说,通过存储过程/函数实现。它的有效性和能力如何-根据您的判断: