sql - TSQL - 在选择语句中将表名标识为单个或多个表的列,而不将其硬编码为查询的一部分
问题描述
我需要在我的选择语句中显示表名。
select col1, table_name_1 as table_name from table_name_1
我将其插入另一个表。
我的问题是我必须动态地这样做,而不是像这个问题所解释的那样。
不确定这是否适用于单个关键字,例如例如。当前日期,我们可以使用 GETDATE() 之类的东西。
谢谢您的回答。
解决方案
我认为 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);