我有一个包含尾随哈希符号的列的表:
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(''))
,' ',', ')
答案 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)