exec ms_foreachtable ' update ? set 字段 = replace(字段,''中华人们'',''我们'') '
exec ms_foreachtable ' update ? set 字段 = dateadd(year,1,字段) '
exec ms_foreachtable ' update ? set 字段 = dateadd(year,1,字段) '
解决方案 »
- 请教前辈,600万条记录,查询时间要40秒,如果5000万条记录呢?
- SQL Server 2005 是 SQL Server 2000 的升级版本么?
- 为什么我SELECT @@IDENTITY AS 'Identity'出来的值和表里面的值不一至,怎么弄?
- 急呀快来帮忙呀!!!怎样在分组查询中提取每个分组的记录数,再插入到表中?
- 数据库导入
- 请问SQLSERVER2000中NTEXT型数据如何导出?
- 一个纯粹的行列转换问题
- 删除重复记录!
- 一个没有日期时间字段的表,是否可以根据录入的时间来排序??SQLSERVER会不会自动给其时间记录?如何写SQL语句
- 讨论:SQL Server的表能支持多少数据量,在多大的数据量下能够游刃有余,200万条记录怎么样?
- 要用GROUP BY做相同类型文章的统计,不能实现,请指教!
- 要算一个货柜车能装多少个箱,箱的大小是不一样的,怎么样摆放才能装到最多。难度大,非常感谢各位!
exec sp_msforeachtable ' update ? set 字段 = dateadd(year,1,字段) '
运行这句话后,
exec sp_msforeachtable ' update nodels set datetimes = dateadd(year,-1,datetimes) '
==datetimes=2056-09-05 17:37:36.000
不知何解?
where c.xtype=61
and c.id=o.id
and o.xtype='U'
获取所有日期字段的列表
然后动态组成UPDATE语句。
作者: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)'