如何在SQL Server中创建由其他列组合而成的计算列?
在SQL Server中创建计算列实现code与ID组合
SQL Server里对应的就是计算列(Computed Column),和你在Access里用到的计算类型逻辑一致,下面给你两种常见的实现方式:
1. 创建新表时直接定义计算列
如果是刚创建表,可以在表结构中直接声明计算列,示例代码如下:
CREATE TABLE YourTableName ( ID INT, Code NVARCHAR(50), -- 拼接Code和ID,用'-'作为分隔符,同时把INT类型的ID转为字符串 CombinedColumn AS CONCAT(Code, '-', CAST(ID AS NVARCHAR(10))) PERSISTED )
CONCAT函数会自动处理NULL值(如果Code或ID为NULL,会转为空字符串再拼接),比用+拼接更安全(用+的话只要其中一个值为NULL,结果就会是NULL)。PERSISTED关键字可选:如果需要给这个计算列创建索引,或者希望计算结果直接存储在表中(而非每次查询时实时计算),就加上它;不需要的话可以直接省略。
2. 给已存在的表添加计算列
如果表已经创建好了,用ALTER TABLE语句添加计算列:
ALTER TABLE YourTableName ADD CombinedColumn AS CONCAT(Code, '-', CAST(ID AS NVARCHAR(10))) PERSISTED
额外说明
- 你可以自定义拼接规则:比如去掉分隔符直接拼接,或者换成其他符号,只需要修改
CONCAT里的参数即可。 - 若要处理NULL的特殊场景,比如当Code为空时显示默认值,可以用
ISNULL函数优化:CombinedColumn AS CONCAT(ISNULL(Code, 'NO_CODE'), '-', CAST(ID AS NVARCHAR(10)))
内容的提问来源于stack exchange,提问作者Megan Paterson
相关产品推荐
相关产品推荐

