Sql server SQL Server从列名中删除尾随字符
我有一个表,其中的列包含尾随的哈希符号:Sql server SQL Server从列名中删除尾随字符,sql-server,Sql Server,我有一个表,其中的列包含尾随的哈希符号: SELECT * Table Id DisplayName_55270A70 OSVersion_66DD9B43 1 NURAPP001 Windows Server 2008 Id DisplayName OSVersion 1 NURAPP001 Windows Server 2008 对于生成此模式的工具的每次安装,表模式似乎都是唯一的。我想创建一个查询,不使用存储过程,它将
SELECT * Table
Id DisplayName_55270A70 OSVersion_66DD9B43
1 NURAPP001 Windows Server 2008
Id DisplayName OSVersion
1 NURAPP001 Windows Server 2008
对于生成此模式的工具的每次安装,表模式似乎都是唯一的。我想创建一个查询,不使用存储过程,它将生成不带哈希符号的列:
SELECT * Table
Id DisplayName_55270A70 OSVersion_66DD9B43
1 NURAPP001 Windows Server 2008
Id DisplayName OSVersion
1 NURAPP001 Windows Server 2008
我能够用以下查询生成逗号分隔的列列表,但我对SQL server了解不够,无法将其转换为可执行查询:
SELECT REPLACE(
(SELECT COLUMN_NAME AS 'data()'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='MTV_OperatingSystem'
ORDER BY ORDINAL_POSITION
FOR XML PATH(''))
,' ',', ')
信用到期:不改变现有模式;不使用
*
而是显式指定列名,为以下列指定表别名
select Id,
DisplayName_55270A70 as DisplayName,
OSVersion_66DD9B43 as OSVersion
from mytable;
如果您不想再次键入,请考虑创建< <代码>视图>代码>(存储的查询),与
相同。create view myview
as
select Id,
DisplayName_55270A70 as DisplayName,
OSVersion_66DD9B43 as OSVersion
from mytable;
然后下一次运行,您只需从myview执行一个
select*
即可创建并执行查询,如下所示:
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)
是否有任何列的名称中有下划线(除了在散列的开头)?如果尾随字符前面总是有下划线(
\uuu
),只要列名称中没有要保留的下划线,就有可能。您可能需要信息\u架构。列
系统视图。是的,表中的所有列都遵循相同的约定。正如我提到的,这个表的模式因实例而异。为了说明:Rahul,正如我提到的,这个表的模式因实例而异。举例说明:实例1:Id DisplayName\u 55270A70 OSVersion\u 66DD9B43实例2:Id DisplayName\u 55270BBB OSVersion\u 66DD9CCC如果我提前知道列名,我会直接在查询中使用别名,选择DisplayName\u 55270BBB作为DisplayName。这是一件奇怪的事情。在这种情况下,您必须从信息\u架构
进行查询,并相应地修改列名(或)使用修改后的列名创建一个辅助表。是的,这是一款名为System Center Operations Manager的Microsoft产品。MTV_操作系统和其他视图都是这样设计的。谢谢,@thepirat000。不幸的是,查询是通过JDBC从Java调用的,因此我无法定义局部变量并执行存储过程。