DECLARE @region VARCHAR(20)
SET @region='shandong'
DECLARE @sql VARCHAR(max)
SET @sql='SELECT '+ @region+' FROM dbo.IpCount WHERE ipType=1 AND riqi = CONVERT(VARCHAR(10), GETDATE(), 120)'
EXEC (@sql)
@region其实是ipcount表中的一个字段名,这个字段类型是int型,我想实现查出来这个之后进行update这个字段的值,在原来的基础上加1,如何实现呢
你的@region为什么要用参数呢
直接 SELECT shandong FROM dbo.IpCount WHERE ipType=1 AND riqi = CONVERT(VARCHAR(10), GETDATE(), 120) 也可以啊
因为不确定是需要插入的是哪个地区的呀,ipcount包含了中国34个省市的字段值呢
@小龙女-90hou:
那就再定义一个变量@regionValue
写了个例子你看下
DECLARE @region varchar(20) DECLARE @regionValue int DECLARE @sql VARCHAR(max) SET @region = 'sort' SET @sql = 'select ' + @region + ' from ZMenus WHERE MenuID =4' CREATE TABLE #T2(TID INT); INSERT INTO #T2 EXEC (@sql); SET @regionValue = (SELECT TID FROM #T2) SET @regionValue = @regionValue + 1 DROP TABLE #T2
@小欢乐: 这种方法是创建一个临时表,他们这样有点浪费,想了一种其他的方法分享一下
DECLARE @region VARCHAR(20) SET @region = 'jiangsu' declare @num int, @sqls nvarchar(4000) ,@ipType VARCHAR(10) SELECT @ipType=1 set @sqls= 'SELECT @a ='+ @region + ' FROM dbo.tb WHERE ipType=' + @ipType + 'AND riqi = CONVERT(VARCHAR(10), GETDATE(), 120)' exec sp_executesql @sqls,N'@a int output',@num output --select @num DECLARE @strRegionnotnull VARCHAR(MAX) SET @strRegionnotnull = 'UPDATE dbo.tb SET ' + @region + '=' + CAST(@num + 1 AS NVARCHAR(200)) + ' WHERE ipType = ' + @ipType + 'AND riqi = CONVERT(VARCHAR(10), GETDATE(), 120)' --PRINT (@strRegionnotnull) EXEC (@strRegionnotnull)