如何在SQL表中创建多列拼接的新列?解决语法报错问题
问题描述
需要将表dbo.equi2022t中的6个字符列拼接为一个名为censusbloc的char(15)列,涉及列信息如下:
censusstate char(2) censuscounty char(3) censustrac char(6) censusblocgroup char(1) censusbloccode char(2) censusbloccode2 char(1)
尝试执行以下SQL语句时触发语法错误:
alter table dbo.equi2022t add censusbloc char(15) AS (Concat(CensusState,CensusCounty,Censustrac,Censusblocgroup,Censusbloccode,Censusbloccode2));
错误提示:
Msg 156, Level 15, State 1, Line 364 Incorrect syntax near the keyword 'AS'.
解决方案
针对MariaDB的修正语法
MariaDB创建计算列时,需在ADD后明确指定COLUMN关键字,修正后的语句如下:
ALTER TABLE dbo.equi2022t ADD COLUMN censusbloc CHAR(15) AS ( CONCAT(censusstate, censuscounty, censustrac, censusblocgroup, censusbloccode, censusbloccode2) );
若使用SQL Server(根据错误提示推测)
如果实际使用的是SQL Server,基础语法无需COLUMN关键字,语句如下:
ALTER TABLE dbo.equi2022t ADD censusbloc CHAR(15) AS ( CONCAT(censusstate, censuscounty, censustrac, censusblocgroup, censusbloccode, censusbloccode2) );
若需要将计算列持久化存储(而非实时计算),可添加PERSISTED关键字:
ALTER TABLE dbo.equi2022t ADD censusbloc CHAR(15) AS ( CONCAT(censusstate, censuscounty, censustrac, censusblocgroup, censusbloccode, censusbloccode2) ) PERSISTED;
内容的提问来源于stack exchange,提问作者Tim Wilcox
相关产品推荐
相关产品推荐

