编写MySQL函数:实现非空值替换及缺失字段创建逻辑
解决background-video-length字段值覆盖或创建slide_duration字段的问题
我平时处理数据库字段同步需求时经常碰到这类场景,给你整理了适配主流数据库的具体操作步骤,直接套用就行:
1. 先确保slide_duration字段存在
首先得保证目标字段slide_duration已经存在于表中,如果没有就创建它。注意字段类型必须和background-video-length完全一致,不然赋值时会出现类型错误。
MySQL/MariaDB 版本:
ALTER TABLE your_table_name ADD COLUMN IF NOT EXISTS slide_duration INT; -- 把INT换成你实际的字段类型,比如DECIMAL(10,2)或者VARCHAR(20)
PostgreSQL 版本:
ALTER TABLE your_table_name ADD COLUMN IF NOT EXISTS slide_duration INT; -- 同样要替换成匹配的字段类型
2. 同步字段值(覆盖操作)
接下来执行更新语句,只要background-video-length不为NULL,就把它的值覆盖到slide_duration里:
MySQL/MariaDB 版本:
UPDATE your_table_name SET slide_duration = `background-video-length` WHERE `background-video-length` IS NOT NULL;
(因为字段名有连字符,所以要用反引号括起来避免语法报错)
PostgreSQL 版本:
UPDATE your_table_name SET slide_duration = "background-video-length" WHERE "background-video-length" IS NOT NULL;
(PostgreSQL里用双引号包裹带特殊字符的字段名)
额外提醒
- 操作前一定要备份数据,或者先在测试环境跑一遍验证结果,避免误操作影响生产数据。
- 如果表的数据量很大,UPDATE语句可能会锁表,建议分批次执行或者挑业务低峰期操作。
内容的提问来源于stack exchange,提问作者jockebq
相关产品推荐
相关产品推荐

