首页 新闻 会员 周边 捐助

sql 更新字段值

0
悬赏园豆:5 [已解决问题] 解决于 2014-04-03 17:16

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,如何实现呢

小龙女-90hou的主页 小龙女-90hou | 初学一级 | 园豆:5
提问于:2014-04-03 09:58
< >
分享
最佳答案
0

你的@region为什么要用参数呢

直接 SELECT shandong FROM dbo.IpCount WHERE ipType=1 AND riqi = CONVERT(VARCHAR(10), GETDATE(), 120)  也可以啊

收获园豆:5
sam.c | 初学一级 |园豆:148 | 2014-04-03 10:36

因为不确定是需要插入的是哪个地区的呀,ipcount包含了中国34个省市的字段值呢

小龙女-90hou | 园豆:5 (初学一级) | 2014-04-03 10:37

@小龙女-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
sam.c | 园豆:148 (初学一级) | 2014-04-03 10:43

@小欢乐: 这种方法是创建一个临时表,他们这样有点浪费,想了一种其他的方法分享一下

 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)
小龙女-90hou | 园豆:5 (初学一级) | 2014-04-03 12:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册