SQL Server从列名中删除尾随字符

时间:2015-06-03 15:37:25

标签: sql-server

我有一个包含尾随哈希符号的列的表:

SELECT * Table

Id DisplayName_55270A70 OSVersion_66DD9B43
1  NURAPP001            Windows Server 2008

对于生成此架构的工具的每个安装,表架构似乎都是唯一的。我想创建一个查询,而不依赖于存储过程,这将生成没有哈希符号的列:

Id DisplayName          OSVersion
1  NURAPP001            Windows Server 2008

我能够使用以下查询生成以逗号分隔的列列表,但我对SQL服务器的了解不足以将其转换为可执行查询:

SELECT REPLACE(
(SELECT COLUMN_NAME AS 'data()'
 FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_NAME='MTV_OperatingSystem' 
 ORDER BY ORDINAL_POSITION
 FOR XML PATH(''))
,' ',', ')

到期时间:http://www.sql-ex.com/help/select20.php

2 个答案:

答案 0 :(得分:1)

不改变现有架构;而不是使用*如果您指定列名明确指定table alias列,如

select Id,
DisplayName_55270A70 as DisplayName,
OSVersion_66DD9B43 as OSVersion
from mytable;

如果您不想再次输入,请考虑创建view(存储的查询),例如

create view myview 
as
select Id,
DisplayName_55270A70 as DisplayName,
OSVersion_66DD9B43 as OSVersion
from mytable;

然后下一次运行,您可以执行select * from myview

答案 1 :(得分:1)

您可以使用EXECUTE创建和执行查询,如下所示:

DECLARE @cols NVARCHAR(MAX)
SET @cols = REPLACE(
(SELECT COLUMN_NAME AS 'data()'
 FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_NAME='BankAcctInfo' 
 ORDER BY ORDINAL_POSITION
 FOR XML PATH(''))
,' ',', ')

DECLARE @EXEC NVARCHAR(MAX)
SET @EXEC = 'SELECT ' + @cols + ' FROM YOURTABLENAME'

EXEC(@EXEC)