仓酷云
标题:
MSSQL网页设计MSSQL批量交换Text字符串
[打印本页]
作者:
爱飞
时间:
2015-1-16 22:23
标题:
MSSQL网页设计MSSQL批量交换Text字符串
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用字符串
可是今朝有很多现存体系仍旧存在text范例的字段,由于各种缘故原由已不克不及修正数据库布局。
可是我们能够在新写的sql语句及存储过程当中接纳新的办法,以备未来mssqlserver丢弃专门针对text等范例的操纵函数后修正程序的贫苦。
上面是一个复杂的交换例子,
针对text范例的字符串交换:
设有表T(idintnotnull,infotext)
请求交换info中的abc为123
一样平常的存储历程会写成:
dropproceduredbo.procedure_1
go
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
createproceduredbo.procedure_1
as
declare@ptrvarbinary(16)
declare@IDint
declare@Positionint,@lenint
declare@strsrcchar(3)
declare@strdscchar(3)
set@strtmp=abc
set@strdsc=123
set@len=3
declarereplace_CursorscrollCursor
for
selecttextptr([info]),idfromT
forreadonly
openreplace_Cursor
fetchnextfromreplace_Cursorinto@ptr,@ID
while@@fetch_status=0
begin
select@Position=patindex(%+@strsrc+%,[info])fromTwhereid=@ID
while@Position>0
begin
set@Position=@Position-1
updatetextT.[info]@ptr@Position@len@strdsc
select@Position=patindex(%+@strsrc+%,[info])fromTwhereid=@ID
end
fetchnextfromreplace_Cursorinto@ptr,@ID
end
closereplace_Cursor
deallocatereplace_Cursor
go
个中用到了text公用的函数updatetext
如今我们改写成
dropproceduredbo.procedure_1
go
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
createproceduredbo.procedure_1
as
declare@IDint
declare@strtmpvarchar(max)
declare@strsrcchar(3),@strdscchar(3)
set@strsrc=abc
set@strdsc=123
declarereplace_CursorscrollCursor
for
selectidfromtesttable
--forreadonly
openreplace_Cursor
fetchnextfromreplace_Cursorinto@ID
while@@fetch_status=0
begin
select@strtmp=[info]fromtesttablewhereid=@ID
select@strtmp=Replace(@strtmp,@strsrc,@strdsc)
updateTset[info]=@strtmpwhereid=@ID
fetchnextfromreplace_Cursorinto@ID
end
closereplace_Cursor
deallocatereplace_Cursor
go
如许,不管info字段改成char,nchar,text都好,一样都可通用
根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
作者:
乐观
时间:
2015-1-19 10:17
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
作者:
分手快乐
时间:
2015-1-24 14:16
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
作者:
若相依
时间:
2015-2-1 16:49
是要和操作系统进行Socket通讯的场景。否则建议慎重!
作者:
山那边是海
时间:
2015-2-7 09:52
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
作者:
活着的死人
时间:
2015-2-21 15:31
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
作者:
透明
时间:
2015-3-6 20:27
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
作者:
再现理想
时间:
2015-3-13 08:17
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
作者:
飘飘悠悠
时间:
2015-3-20 17:25
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2