为什么这会发生在sql中

时间:2013-03-04 06:08:51

标签: sql sql-server

我在sql中有以下语句

 declare @date varchar(20)
 declare @query  NVARCHAR(MAX)

 set @date= '2013-1-1'
 set @query= 'print '+@date+''
 execute (@query)

我得到的回答是2011年不是2013-1-1 .. 为什么会这样。该怎么做才能得到2013-1-1而不是2011年的答案 执行(@query)语句

2 个答案:

答案 0 :(得分:3)

您的查询是有效的:

print 2013-1-1

引起:

'print '+@date+''

如果您将SQL重写为:

print @data

您将获得打印的价值:2013-1-1

如果您更新了原始查询:

declare @date varchar(20)
declare @query  NVARCHAR(MAX)

set @date= '2013-1-1'
set @query= 'print '''+@date+''''
execute (@query)

这与写作相同:

print '2013-1-1'

答案 1 :(得分:0)

你也可以尝试这样....这也会给你答案

声明@date varchar(20)  声明@query NVARCHAR(MAX)

设置@ date ='2013-1-1'  设置@ query ='print'''+ @ date +''''  执行(@query)