You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:20:27