到目前为止,我有这段代码:
declare @random int, @upper int, @lower int, @rndtb varchar(20)
set @lower = 1
set @upper = 999
select @random = ROUND(((@upper - @lower) * rand() + @lower),0)
select @rndtb = '##show'+cast(@random as varchar(20))+''
但那给了我
将varchar值'## show'转换为数据类型int时,转换失败。
我想要实现的是每次执行查询时都要创建一个表## show + random number。
示例:
##show01
##show78
##show43
用@bluefeet所说的编辑,找到了用
创建表格的方法Declare @SQL VarChar(1000)
SELECT @SQL = 'Create Table ' + @rndtb + '('
SELECT @SQL = @SQL + 'ID int NOT NULL Primary Key, FieldName VarChar(10))'
Exec (@SQL)
但如何调用或插入此表?
答案 0 :(得分:1)
由于您要将参数@random
添加到字符串中,因此需要将其转换为varchar,以便可以将其连接到字符串部分:
select @rndtb = '##show'+cast(@random as varchar(20))+''
您的完整代码将是:
declare @random int, @upper int, @lower int, @rndtb varchar(20)
set @lower = 1
set @upper = 999
select @random = ROUND(((@upper - @lower) * rand() + @lower),0)
select @rndtb = '##show'+cast(@random as varchar(20))+''
根据您的编辑,您需要使用动态SQL插入新表:
select @SQL = 'insert into '+@rndtb+'
select *
from yourtable'
exec (@sql)
答案 1 :(得分:0)
使用它:
select @rndtb = '##show'+CONVERT(VARCHAR(20), @random, 0)
答案 2 :(得分:0)