如何通过SQL将同表两列合并存入已创建的FULL_ADDRESS列?
嘿,我看到你想把COLUMN1和COLUMN2的内容拼接后存入FULL_ADDRESS列,不过你用的ALTER TABLE语句不对哦——ALTER是用来修改表结构的(比如加列、改列类型),要更新表中已有的数据,得用UPDATE语句才行!
正确的SQL更新方案
根据你使用的数据库不同,字符串拼接的语法略有区别,下面是几种常见数据库的写法:
1. SQL Server / Sybase
这类数据库支持直接用+拼接字符串:
UPDATE tbl SET FULL_ADDRESS = COLUMN1 + ' ' + COLUMN2;
2. MySQL / MariaDB
推荐用CONCAT()函数(无需额外配置):
UPDATE tbl SET FULL_ADDRESS = CONCAT(COLUMN1, ' ', COLUMN2);
要是你习惯用||拼接,也可以先开启对应模式再操作:
SET sql_mode = 'PIPES_AS_CONCAT'; UPDATE tbl SET FULL_ADDRESS = COLUMN1 || ' ' || COLUMN2;
3. PostgreSQL / Oracle / DB2
这些数据库默认用||作为字符串拼接运算符:
UPDATE tbl SET FULL_ADDRESS = COLUMN1 || ' ' || COLUMN2;
小提醒
如果COLUMN1或COLUMN2可能存在NULL值,直接拼接可能会让FULL_ADDRESS变成NULL,这时候可以用COALESCE函数把NULL替换成空字符串,比如MySQL里可以这么写:
UPDATE tbl SET FULL_ADDRESS = CONCAT(COALESCE(COLUMN1, ''), ' ', COALESCE(COLUMN2, ''));
另外,要是你希望之后修改COLUMN1或COLUMN2时,FULL_ADDRESS能自动同步更新,还可以把它设置成计算列,比如SQL Server的写法:
ALTER TABLE tbl ALTER COLUMN FULL_ADDRESS AS COLUMN1 + ' ' + COLUMN2 PERSISTED;
MySQL的计算列写法:
ALTER TABLE tbl MODIFY COLUMN FULL_ADDRESS VARCHAR(30) GENERATED ALWAYS AS (CONCAT(COLUMN1, ' ', COLUMN2)) STORED;
内容的提问来源于stack exchange,提问作者Nawaf
相关产品推荐
相关产品推荐

