记录一次修改数据库产生的bug,本意是将一个值赋给另一个值,但由于对所存数据了解不全面,致使部分数据为空,这边操作的数据是图片地址,一般存地址会以逗号分隔,所以需要从另一个字段取第一个图片来填充这些空值。
这里使用substring_index(column, ',', 1)方法来实现。
SELECT SUBSTRING_INDEX(image, ',', 1), image FROM t_virtual_goods WHERE platform_goods_type = 'physical';
这是查询然后对比,然后需要修改
UPDATE t_virtual_goods SET cover_image = SUBSTRING_INDEX(image, ',', 1) WHERE platform_goods_type = 'physical';
问题就这样解决了,另外扩展下substring的用法
sql中substring()的相关用法介绍:
1、SUBSTRING(name,3) 截取name这个字段 从第三个字符开始,之后的所有个字符
SELECT SUBSTRING('1234567',3)
结果:34567
2、SUBSTRING(name, -4) 截取name这个字段的第 4 个字符位置(倒数)开始取,直到结束
SELECT SUBSTRING('1234567',-4)
结果:4567
3、SUBSTRING(name, -4,2) 截取name这个字段的第 4 个字符位置(倒数)开始取,只截取之后的2个字符
SELECT SUBSTRING('1234567',-4,2)
结果:45
4、substring_index('www.baidu.com', '.', 2) 截取第二个 '.' 之前的所有字符
SELECT substring_index('www.baidu.com', '.', 2)
结果: www.baidu