求几句SQL语名 本帖最后由 postcha 于 2010-04-26 12:02:37 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 --2.用下面的链接后或在B注册a后,然后:update table2set shu = n.shufrom b.b1.dbo.table2 m, a.a1.dbo.table where m.id = n.id不同服务器数据库之间的数据操作--创建链接服务器 exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址' exec sp_addlinkedsrvlogin 'ITSV' , 'false' , null , '用户名' , '密码' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV' , 'droplogins' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) --生成本地表 select * into 表 from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) --把本地表导入远程表 insert openrowset( 'SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) select *from 本地表 --更新本地表 update b set b.列A=a.列A from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) as a inner join 本地表 b on a.column1 = b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址' --查询 select * FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') --把本地表导入远程表 insert openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') select * from 本地表 --更新本地表 update b set b.列B=a.列B FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') as a inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset SELECT * FROM opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').test.dbo.roy_ta --把本地表导入远程表 insert opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').数据库.dbo.表名 select * from 本地表 --1http://topic.csdn.net/u/20100426/11/0c3540ae-c6d5-4ec8-95ea-081fff8fa088.html?22511 create procedure p_replacentext(@vTable varchar(50), @vField varchar(30),@vBefore varchar(8000),@vAfter varchar(8000)) as begin Declare @Sql nvarchar(4000) declare @p_s varchar(800) Declare @p binary(16),@postion int,@rplen int set @Sql=N 'Select @p=textptr( '+@vField+ '),@rplen=len( ' ' '+@vBefore+ ' ' '),@postion=patindex( ' '% '+@vBefore+ '% ' ', '+@vField+ ')-1 from '+@vTable exec sp_executesql @Sql,N '@p binary(16) output,@rplen int output,@postion int output ',@p output,@rplen output,@postion output while @postion > = 0 begin exec master.dbo.xp_varbintohexstr @p, @p_s out set @Sql=N 'updatetext '+@vTable+ '. '+@vField+ ' '+@p_s+ ' '+cast(@postion as varchar(8))+ ' '+cast(@rplen as varchar(4))+ ' ' ' '+@vAfter+ ' ' ' ' print @Sql exec(@Sql) set @Sql=N 'select @postion=patindex( ' '% '+@vBefore+ '% ' ', '+@vField+ ')-1 from '+@vTable exec sp_executesql @Sql,N '@postion int output ',@postion output end end --------- create TABLE t(col1 char(1000), col2 ntext) INSERT t SELECT ' ', 'aa北京中华人民共和国北京天安门北京asdsdf '+REPLICATE( 'a ', 8000) select * from t exec p_replacentext 't ', 'col2 ', '北京 ', '首都 ' select * from t drop table t --结果 aa北京中华人民共和国北京天安门北京asdsdfaaaa...aa首都中华人民共和国首都天安门首都asdsdfaaaaa... 请问一个powerdesigner的问题 sql语句问题,请高手帮忙看看 新开一个帖子,还是关于用sql2005实现数据with Table AS 合并问题。。。。 关于不同数据库视图的创建 我要申请成为’基础类‘版版主,请大家多多支持! mssql 2005连接不上,但是用本地mssql 2000控制台可以登录操作 奇怪的问题 [求组] SQL Server2008 R2 无服务器 sql-server的自动增加字段在那儿? 如何处理sql server7.0进行数据备份和恢复出现的Unicode问题? 关于主键和索引对记录的排序问题 求个UPDATE语句.效率好1点的.
set shu = n.shu
from b.b1.dbo.table2 m, a.a1.dbo.table
where m.id = n.id不同服务器数据库之间的数据操作--创建链接服务器
exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'ITSV' , 'false' , null , '用户名' , '密码' --查询示例
select * from ITSV.数据库名.dbo.表名 --导入示例
select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV' , 'droplogins' --连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset --查询示例
select * from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) --生成本地表
select * into 表 from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) --把本地表导入远程表
insert openrowset( 'SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名)
select *from 本地表 --更新本地表
update b
set b.列A=a.列A
from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) as a inner join 本地表 b
on a.column1 = b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址'
--查询
select *
FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名')
--把本地表导入远程表
insert openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') as a
inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset
SELECT *
FROM opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').数据库.dbo.表名
select * from 本地表
create procedure p_replacentext(@vTable varchar(50), @vField varchar(30),@vBefore varchar(8000),@vAfter varchar(8000))
as
begin
Declare @Sql nvarchar(4000)
declare @p_s varchar(800)
Declare @p binary(16),@postion int,@rplen int
set @Sql=N 'Select @p=textptr( '+@vField+ '),@rplen=len( ' ' '+@vBefore+ ' ' '),@postion=patindex( ' '% '+@vBefore+ '% ' ', '+@vField+ ')-1 from '+@vTable
exec sp_executesql @Sql,N '@p binary(16) output,@rplen int output,@postion int output ',@p output,@rplen output,@postion output
while @postion > = 0
begin
exec master.dbo.xp_varbintohexstr @p, @p_s out
set @Sql=N 'updatetext '+@vTable+ '. '+@vField+ ' '+@p_s+ ' '+cast(@postion as varchar(8))+ ' '+cast(@rplen as varchar(4))+ ' ' ' '+@vAfter+ ' ' ' '
print @Sql
exec(@Sql)
set @Sql=N 'select @postion=patindex( ' '% '+@vBefore+ '% ' ', '+@vField+ ')-1 from '+@vTable
exec sp_executesql @Sql,N '@postion int output ',@postion output
end
end ---------
create TABLE t(col1 char(1000), col2 ntext)
INSERT t SELECT ' ', 'aa北京中华人民共和国北京天安门北京asdsdf '+REPLICATE( 'a ', 8000)
select * from t
exec p_replacentext 't ', 'col2 ', '北京 ', '首都 '
select * from t
drop table t
--结果
aa北京中华人民共和国北京天安门北京asdsdfaaaa...aa首都中华人民共和国首都天安门首都asdsdfaaaaa...