SQL Server:如何从带有前缀的表中选择所有内容?

我在一个很长的存储过程中有以下代码,其中P等于Products表:
SELECT
P.*,etc1,etc2

哪个会给我“ProductID”等等.

我想用前缀选择它,例如:

SELECT
P.* AS P_*,etc2

哪个会给我“P_ProductID”等等.

这可能吗?

解决方法

除非您使用动态sql.虽然需要这样的东西是非常罕见的,你确定你需要它吗?

工作实例

create table Products (ProductID int,Price money,Description varchar(10));
insert Products select 1,12.3,'apples'
insert Products select 2,2.4,'bananas'
create table OrderDetails (OrderID int,ProductID int,Qty int)
insert into OrderDetails select 11,1,2
insert into OrderDetails select 11,2,4

declare @sql nvarchar(max)
select @sql = coalesce(@sql+',','') +
    'P.' + QuoteName(Column_name) + ' as ' + QuoteName('P_' + Column_name)
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'Products'
order by ORDINAL_POSITION
set @sql = '
select ' + @sql + ',O.OrderID,O.Qty
from Products P
inner join OrderDetails O on P.ProductID = O.ProductID
'
--print @sql   :: uncomment if you need to see it
exec (@sql)

输出

P_ProductID P_Price               P_Description OrderID     Qty
----------- --------------------- ------------- ----------- -----------
1           12.30                 apples        11          2
2           2.40                  bananas       11          4

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03