sql - 是否可以在 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。
解决方案
如果您对动态 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
虽然我不确定您为什么不更改表中的列名。
推荐阅读
- java - Java switch 语句表示即使在案例 1 中也需要常量表达式
- javascript - JavaScript Ajax 调用 async:false
- java - Java - 绑定到特定子类的通用编号方法签名
- mysql - 您不能在 FROM 子句中指定目标表 'table_name' 进行更新
- class - 如何覆盖用户定义的 I/O 过程?
- php - 如何在 PHP 中检测 PDF 中的图层
- .net - 了解 Azure 消息队列中的毒药消息处理并在逻辑应用中使用它
- c++ - 为什么“向量迭代器不兼容”错误仅在调试模式下发生?
- javascript - 在表单提交时验证文本框
- r - Lbq 测试和 ARMA 结果,我应该包括滞后吗?