如何在SQL Server Management Studio中将单行查询结果多行显示?
嘿,我完全懂你面对那种列数超多的单行数据时,看网格挤得眼睛都花的感觉!在SSMS里其实有几个实用的办法能帮你把数据转成清爽的多行显示,我给你整理了两种最常用的:
在SSMS中将单行多列数据转为多行显示的方法
方法一:用SSMS自带的「查看详细信息」功能(最快最省心)
- 先执行你的单行查询,比如
SELECT * FROM YourTableName WHERE PrimaryKey = '目标主键值' - 在查询结果的网格里,随便点击该行的任意一个单元格
- 按下快捷键
Ctrl+R,或者右键选择「查看详细信息」 - 这时候会弹出一个独立窗口,把每一列的名称和对应的值拆分成一行一行显示,超适合阅读大列数的数据!
方法二:用动态SQL生成键值对结果(适合需要导出或自定义显示的场景)
如果需要把结果直接以多行键值对的形式输出(方便复制或保存),可以写一段动态SQL自动处理所有列,不用手动逐个列名:
DECLARE @TableName NVARCHAR(128) = '你的表名'; DECLARE @PrimaryKeyCol NVARCHAR(128) = '主键列名'; DECLARE @TargetValue NVARCHAR(128) = '要查询的主键值'; DECLARE @DynamicSQL NVARCHAR(MAX); SELECT @DynamicSQL = STRING_AGG( CONCAT(N'SELECT ''', COLUMN_NAME, ''' AS 列名, CAST(', QUOTENAME(COLUMN_NAME), ' AS NVARCHAR(MAX)) AS 值 FROM ', QUOTENAME(@TableName), ' WHERE ', QUOTENAME(@PrimaryKeyCol), ' = ''', @TargetValue, ''''), N' UNION ALL ' ) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName; EXEC sp_executesql @DynamicSQL;
- 替换代码里的
你的表名、主键列名和要查询的主键值为你的实际信息 - 执行后会返回两行结果:第一列是列名,第二列是对应的值,每一列单独占一行,完美解决大列数的阅读痛点
小提示:如果你的列里有XML、二进制这类特殊数据类型,可以调整CAST里的转换类型,确保内容能正常显示。
内容的提问来源于stack exchange,提问作者Volker




