首页 > 解决方案 > 是否可以在 SQL 查询中使用模式匹配来减少返回的列名

问题描述

我将编写一些自定义代码来减少返回的列的长度。只是我想知道当我获取数据本身时是否可以这样做。

例如查询返回:SELECT * FROM sillytable

This_part_always_remains_same_for_all_columns_Date This_part_always_remains_same_for_all_columns_Value
2021 年 1 月 18 日 34
17/01/2021 45

我可以在它返回的查询中做些什么吗

Manf_Date Manf_Value
2021 年 1 月 18 日 34
17/01/2021 45

本质上,我想在返回的结果中用Manf替换This_part_always_remains_same_for_all_columns

标签: sqlsql-server

解决方案


如果您对动态 SQL 持开放态度,则可以这样做:

DECLARE @sql varchar(max) 
SELECT @sql = 'SELECT ' + 
              string_agg(name + ' as ' + 
              replace(name, 'This_part_always_remains_same_for_all_columns', 'Manf_'), ',') + 
             ' FROM SillyTable'
FROM sys.columns
WHERE object_id = OBJECT_ID('sillytable')

exec(@sql)

这将返回:

Manf__Date  Manf__Value
2021-01-18  34
2021-01-17  45

虽然我不确定您为什么不更改表中的列名。


推荐阅读