首页 > 解决方案 > TSQL - 在选择语句中将表名标识为单个或多个表的列,而不将其硬编码为查询的一部分

问题描述

我需要在我的选择语句中显示表名。

select col1, table_name_1 as table_name  from table_name_1 

我将其插入另一个表。

我的问题是我必须动态地这样做,而不是像这个问题所解释的那样。

在select语句中显示表名

不确定这是否适用于单个关键字,例如例如。当前日期,我们可以使用 GETDATE() 之类的东西。

谢谢您的回答。

标签: sqlsql-servertsql

解决方案


我认为 T-SQL 中没有可用的内置函数,除了OBJECT_NAME (object_id('TableName'))硬编码表名所需的函数。

但是,作为解决方法,以下查询可以满足您的要求:

Declare @tbname varchar(50); 
Declare @SelectQuery varchar(2000); 

set @tbname = 'YourTable';
set @SelectQuery = 'select *, OBJECT_NAME (object_id(' + '''' + @tbname + '''' +')) from ' + @tbname;
--print @SelectQuery;
exec (@SelectQuery);

推荐阅读