如何将变量和字符串连接为表名

时间:2016-08-24 14:52:40

标签: sql-server

是否可以将sting连接到变量作为表名。

e.g。

DECLARE @ENTITY VARCHAR(50)
SET @ENTITY = 'NATURAL'

SELECT * 
INTO @ENTITY+'_COMPLETENESS_NAME'
FROM TABLE1

因此,我想创建一个名为[NATURAL_COMPLETENESS_NAME]

的表

我目前正在使用MS SQL Server 2014

2 个答案:

答案 0 :(得分:4)

您需要使用动态SQL:

DECLARE @sql NVARCHAR(max);

SET @sql = '
SELECT * 
INTO ' + @ENTITY + '_COMPLETENESS_NAME
FROM TABLE1';

EXEC sp_executesql @sql;

注意:您不能对表名使用参数,因为您不能使用表,列,架构或数据库标识符的参数。为安全起见,您可能希望使用:

SET @sql = '
SELECT * 
INTO ' + QUOTENAME(@ENTITY + '_COMPLETENESS_NAME') +
FROM TABLE1';

如果@ENTITY有不寻常的字符,这可以保护您。

答案 1 :(得分:2)

试试这个:

DECLARE @ENTITY VARCHAR(50)
SET @ENTITY = 'NATURAL'

EXEC ('SELECT  * INTO '+ @ENTITY + '_COMPLETENESS_NAME FROM TABLE1')