SQL Server:在动态查询中设置所有列别名

时间:2015-05-07 10:15:06

标签: sql sql-server

这是一个漫长而复杂的故事,为什么我需要这样做,但我将获得一个查询字符串,然后我将使用此代码执行

EXECUTE sp_ExecuteSQL 

我需要将所有列的别名设置为“value”。传入的查询中可能存在可变数量的列,它们可能是各种数据类型,例如

SELECT 
    Company, AddressNo, Address1, Town, County, Postcode 
FROM Customers

SELECT 
    OrderNo, OrderType, CustomerNo, DeliveryNo, OrderDate 
FROM Orders

这是否可行且相对简单,或者我是否需要在SQL查询中包含别名(如果可以避免并在处理查询时完成此操作,则更容易不执行此操作)

--- ---编辑 例如,第一个查询的输出将是

Company   AddressNo Address1     Town   County   Postcode
--------- --------- ------------ ------ -------- --------
Dave Inc  12345     1 Main Road  Harlow Essex    HA1 1AA
AA Tyres  12234     5 Main Road  Epping Essex    EP1 1PP

我希望它是

value     value     value        value  value    value
--------- --------- ------------ ------ -------- --------
Dave Inc  12345     1 Main Road  Harlow Essex    HA1 1AA
AA Tyres  12234     5 Main Road  Epping Essex    EP1 1PP

因此每列都有别名“value”

我可以用

做到这一点
SELECT 
    Company AS 'value', AddressNo AS 'value', Address1 AS 'value', Town AS 'value', County AS 'value', Postcode AS 'value' 
FROM Customers

但是如果我们不必手动为我们正在为此过程的这一部分提供的SQL中的每一列别名,那么它会更好(它会在流程链的其他步骤中节省额外的复杂性)。

关于XY问题,这是一个非常大的流程链中的一个小部分,它需要页面来详细解释整个过程 - 本质上,我们从数据库触发器中取出代码并将其放入动态程序;然后我们将有一些前端,用户将访问“编辑”触发器调用的SQL语句,然后这些将动态地将结果输出到其他系统。如果我们手动为SQL进入别名,它就可以工作,但是如果有一种方法我们可以将干净的SQL提供给进程然后在处理SQL时应用别名 - 它会让我们保持DRY,那么它会更简洁。

1 个答案:

答案 0 :(得分:0)

我完全不了解你要完成的任务,但我认为答案是否定的:没有内置的方法如何全局预定义或覆盖临时查询的列别名。您需要自己编写代码。