exec ms_foreachtable ' update ? set 字段 = replace(字段,''中华人们'',''我们'') '
exec ms_foreachtable ' update ? set 字段 = dateadd(year,1,字段) '

解决方案 »

  1.   

    记错了:exec sp_msforeachtable ' update ? set 字段 = replace(字段,''中华人们'',''我们'') '
    exec sp_msforeachtable ' update ? set 字段 = dateadd(year,1,字段) '
      

  2.   

    to 马可  为什么我按你的方法做,本来应该只加一年的,却加了53年了,不懂。像我的datetimes=2003-09-05 17:37:36.000
    运行这句话后,
    exec sp_msforeachtable ' update nodels set datetimes = dateadd(year,-1,datetimes) '
    ==datetimes=2056-09-05 17:37:36.000
    不知何解?
      

  3.   

    --谁叫你乱改的?下面的语句中,你只能改字段名,其他的不能动.exec sp_msforeachtable ' update ? set 字段 = dateadd(year,1,字段) '
      

  4.   

    可能是我表达的不够清楚,我想替换的是表里的内容,并且我不知道具体哪些字段涉及到了“中华人们”。sos 紧急求救,有没有解决的办法?
      

  5.   

    select o.name tablename, c.name fieldname, c.xtype from syscolumns c,sysobjects o 
    where c.xtype=61
    and c.id=o.id
    and o.xtype='U'
    获取所有日期字段的列表
    然后动态组成UPDATE语句。
      

  6.   

    如果不加c.xtype=61条件,就是所有的字段。
      

  7.   

    实用的搜索引擎式关键字查询存储过程
    作者:CrazyFor (冬眠的鼹鼠) CREATE PROCEDURE SP_AdvanceSearch    --author: CrazyFor
    (@TableName Nvarchar(200) --表名
    ,@ViewColumns  Nvarchar(200)='*' --需要查询的字段列表
    ,@SearchColumnName Nvarchar(100) --被搜索的字段名
    ,@KeyWord Nvarchar(200) --搜索关键字
    )
     AS
    ---开始处理关键字
    ---**********************
    declare @TempKeyWord Nvarchar(200)
    ,@CurrKeyWord Nvarchar(200)declare @KH_Q Nvarchar(20),@KH_H Nvarchar(20)
    declare @KeyCount int,@I int,@J int,@FirstWordLocal int
    declare @AndOr varchar(20),@WhereStr Nvarchar(2000)if @KeyWord<>N'' 
    begin 

    set @KeyWord=Lower(@KeyWord) set @KeyWord=replace(@KeyWord,')',')') --处理全角的括号
    set @KeyWord=replace(@KeyWord,'(','(')
    set @KeyWord=replace(@KeyWord,' ',' ')
    set @KeyWord=replace(@KeyWord,'+','+') --处理全角+-|
    set @KeyWord=replace(@KeyWord,'-','-')
    set @KeyWord=replace(@KeyWord,'|','|') set @KeyWord=replace(@KeyWord,' and ','+') --处理全角英文关键字
    set @KeyWord=replace(@KeyWord,' or ','|')
    set @KeyWord=replace(@KeyWord,' not ','-')
    set @KeyWord=replace(@KeyWord,' ','+') set @KeyWord=replace(@KeyWord,'+',';+')
    set @KeyWord=replace(@KeyWord,'-',';-')
    set @KeyWord=replace(@KeyWord,'|',';|')
    if len(replace(@KeyWord,'(',''))<>len(replace(@KeyWord,')',''))  
    set @KeyWord='' --前后括号不匹配 Set @WhereStr=' where '

    if @KeyWord<>N'' 
    begin 
    --生成搜索字符串
    set @KeyWord=@KeyWord+';' set @KeyCount=len(@KeyWord)-len(replace(@KeyWord,';',''))
    set @TempKeyWord=@KeyWord set @I=1 while (@I<=@KeyCount)
    begin
    set @FirstWordLocal=CharIndex(';',@TempKeyWord)
    set @CurrKeyWord=rtrim(ltrim(left(@TempKeyWord,@FirstWordLocal-1)))
    set @TempKeyWord=rtrim(ltrim(right(@TempKeyWord,len(@TempKeyWord)-@FirstWordLocal)))
    if (@CurrKeyWord='' or replace(replace(replace(replace(replace(@CurrKeyWord,'+',''),'-',''),'|',''),'(',''),')','') ='')
    begin
    set @WhereStr=@WhereStr +replace(replace(replace(@CurrKeyWord,'+',''),'-',''),'|','')
    set @I=@I+1
    CONTINUE

    end set @KH_Q=''
    set @KH_H=''

    --检查前面的括号
    Set @j=1
    while (substring(@CurrKeyWord,@j,1)='(' 
    or substring(@CurrKeyWord,@j,1)='+' 
    or substring(@CurrKeyWord,@j,1)='-' 
    or substring(@CurrKeyWord,@j,1)='|')
    begin if substring(@CurrKeyWord,@j,1)='(' 
    set @KH_Q=@KH_Q + '(' set @j=@j+1
    end --检查后面的括号
    Set @j=len(@CurrKeyWord)
    while (substring(@CurrKeyWord,@j,1)=')')
    begin
    set @KH_H=@KH_H + ')'
    set @j=@j-1
    end set @AndOr=''
    if substring(@CurrKeyWord,1,1)='+' 
    set @AndOr='and'  if substring(@CurrKeyWord,1,1)='-' 
    set @AndOr='and not' if substring(@CurrKeyWord,1,1)='|' 
    set @AndOr='or' 

    Set @CurrKeyWord=replace(@CurrKeyWord,'+','')
    Set @CurrKeyWord=replace(@CurrKeyWord,'-','')
    Set @CurrKeyWord=replace(@CurrKeyWord,'|','')
    Set @CurrKeyWord=replace(@CurrKeyWord,')','')
    Set @CurrKeyWord=replace(@CurrKeyWord,'(','') Set @WhereStr=@WhereStr + ' ' + @AndOr + ' ' + @KH_Q + ' ' + @SearchColumnName +' like ''%' + @CurrKeyWord + '%'' ' + @KH_H set @I=@I+1
    end
    end
    end
    exec ( 'select ' +@ViewColumns + ' from ' +@TableName + @WhereStr)
    GO应用实例:
    exec SP_AdvanceSearch 'syscolumns' , '*' ,'[name]' ,'(id+a)-b'
    exec SP_AdvanceSearch 'syscolumns' , '*' ,'[name]' ,'(id+a)+b'
    exec SP_AdvanceSearch 'syscolumns a left join sysobjects b on a.id=b.id' , '*' ,'a.[name]' ,'(ta+b-@)|(id+s)'