日期:2014-05-17  浏览次数:20520 次

统一改换查询出的字段。。这是不是想多了?
能不能这样

select 
    A.* as A_*
from QAQuestion Q inner join QAAnswer A ON A.QuestionID = Q.ID

简单地说,不想一个个地去给每个字段as别名
我如上去写只是打个比方。。实际运行不了的,想得到的查询结果是
A_字段1,A_字段2,A_字段3,A_字段4

有没有办法呢?

------解决方案--------------------
建议用视图,定义时写一次[字段] as [别名]即可..
------解决方案--------------------

哇塞,顶
------解决方案--------------------
方法有,不过处理过来的就更麻烦了。
------解决方案--------------------
用动态SQL语句倒是可以实现
------解决方案--------------------


select 
   'A_'+A.*
from QAQuestion Q inner join QAAnswer A ON A.QuestionID = Q.ID


------解决方案--------------------
因为在sql server端,你写的sql语句是各式各样的,要想实现你的A.* as A_*,实际上就是要改写查询,改为:

select a.字段1 as a_字段1,
       a.字段2 as a_字段2,
       a.字段3 as a_字段3,
from a

下面是通过动态语句来实现的:

--先建个表
select * into wc_table
from sys.objects

/*
要实现
select a.* as a_*
from wc_table
的效果
*/


--动态生成语句为:
declare @sql varchar(max);

set @sql = '';

select @sql = @sql + ',' + c.name + ' as A_' + c.name   
from sys.tables t
inner join sys.columns c
        on t.object_id = c.object_id

where t.name = 'wc_table'
order by c.column_id


set @sql = 'select ' + 
           STUFF(@sql,1,1,'') +
           ' from wc_table A'


select @sql           
/*
我把结果格式化了一下就是这样:

SELECT name                AS A_name, 
       object_id           AS A_object_id, 
       principal_id        AS A_principal_id, 
       schema_id           AS A_schema_id, 
       parent_object_id    AS A_parent_object_id, 
       type                AS A_type, 
     &