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

如何在SQL Server Management Studio (SSMS)中合并列?附环境与表结构

合并SQL Server表中列的几种实用方法

嘿,针对你在SSMS v17.3里操作SQL Server 2014(版本12.0.2269.0)时,想要合并flow1表中Book、Ch、V列的需求,我给你整理了几种好用的实现方式:

1. 用+运算符手动拼接(兼容全版本SQL Server)

这种方法需要手动处理两个关键点:数值类型转字符串、NULL值兜底(因为只要有一个值是NULL,整个拼接结果会直接变成NULL)。我们可以用ISNULL把NULL替换为空字符串,用CAST把INT类型的Ch和V转成字符串:

SELECT 
    Id,
    A,
    B,
    -- 拼接为「书籍名称 章节-节」的格式
    ISNULL(Book, '') + ' ' + ISNULL(CAST(Ch AS VARCHAR(10)), '') + '-' + ISNULL(CAST(V AS VARCHAR(10)), '') AS BookChapterSection
FROM dbo.flow1;

2. 用CONCAT函数(SQL Server 2012+推荐)

CONCAT是微软在SQL Server 2012之后推出的便捷函数,它会自动帮你搞定两个麻烦事:

  • 自动把数值类型(比如Ch、V的INT)转换成字符串,不用手动写CAST
  • 遇到NULL值直接当成空字符串处理,不会让整个拼接结果失效

用法特别简洁:

SELECT 
    Id,
    A,
    B,
    CONCAT(Book, ' ', Ch, '-', V) AS BookChapterSection
FROM dbo.flow1;

3. 自定义格式(比如章节号补零对齐)

如果你的章节/节号需要统一格式(比如个位数补零,变成03-44而不是3-44),可以用FORMAT函数配合CONCAT实现:

SELECT 
    Id,
    A,
    B,
    CONCAT(Book, ' ', FORMAT(Ch, '00'), '-', FORMAT(V, '00')) AS BookChapterSection
FROM dbo.flow1;

4. 添加永久计算列(长期使用拼接结果的首选)

要是你不想每次查询都写拼接逻辑,可以给表加一个计算列,SQL Server会自动维护这个列的数值:

-- 添加持久化计算列(PERSISTED表示值会存在磁盘上,查询速度更快)
ALTER TABLE dbo.flow1
ADD BookChapterSection AS CONCAT(Book, ' ', Ch, '-', V) PERSISTED;

之后直接查询BookChapterSection列就能拿到拼接好的结果啦!

内容的提问来源于stack exchange,提问作者barlop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:26:25