【澳门金沙vip】一些 T-SQL 技巧

复制代码 代码如下:usemaster
declare@dirvarchar(256卡塔尔国,@dir_dbvarchar(256),
@verbvarchar(256),@cmdvarchar(256),
@backup_namevarchar(256),@dynamic_namevarchar(10),
@disk_namevarchar(256卡塔尔(قطر‎ –建设布局互连网连接 execxp_cmdshell’netuseK:/delete’
execxp_cmdshell’netuseK:\\Lant\backupbackup/user:Lant\backup’
–设定名字 set@dynamic_name=convert(varchar(10),getdate(),120)
set@dir=’K:\’+@dynamic_name set@dir_db=@dir+’ibm’ set@verb=’mkdir’
–营造目录 –set@cmd=@verb+@dir –execxp_cmdshell@cmd
set@cmd=@verb+@dir_db execxp_cmdshell@cmd –wapec_wap
set@backup_name=’lifengOA_’+@dynamic_name
set@disk_name=@dir_db+’\’+@backup_name
EXECsp_addumpdevice’disk’,@backup_name,@disk_name
BACKUPDATABASEec_wapTO@backup_name execsp_dropdevice@backup_name
–文档ec_tech set@backup_name=’文档_’+@dynamic_name
set@disk_name=@dir_db+’\’+@backup_name
EXECsp_addumpdevice’disk’,@backup_name,@disk_name
BACKUPDATABASEec_techTO@backup_name execsp_dropdevice@backup_name
–博吧ec_blog set@backup_name=’博吧_’+@dynamic_name
set@disk_name=@dir_db+’\’+@backup_name
EXECsp_addumpdevice’disk’,@backup_name,@disk_name
BACKUPDATABASEec_blogTO@backup_name execsp_dropdevice@backup_name
execxp_cmdshell’netuseK:/delete’然后做二个Task,那么,SQLServer就能够备份到钦命的互连网地址\\Lant\bakcup下

制的定义
复制是将一组数据从多少个数据源拷贝到多少个数据源的能力,是将一份数据发布到多少个存储站点上的立见成效办法。使用复制本领,客商能够将一份数据发表到多台服务器上,进而使区别的服务器客户都足以在权力的准予的限量内共享这份数据。复制技巧能够保险布满在不一致地点的数额自动同步更新,进而保障数据的一致性。
SQL复制的基本因素包蕴 出版服务器、订阅服务器、分发服务器、出版物、小说SQL复制的劳作原理
SQLSEPRADOVE奥迪Q5重要采用出版物、订阅的点子来拍卖复制。源数据所在的服务器是出版服务器,肩负揭橥数量。出版服务器把要发表的数额的有所改动状态的正片复制到分发服务器,分发服务器满含有三个散发数据库,可选择数据的装有改造,并保留这么些更改,再把那一个校订分发给订阅服务器
SQLSETucsonVECR-V复制本事项目 SQLSELacrosseVEOdyssey提供了两种复制手艺,分别是: 1、快速照相复制
2、事务复制 3、合并复制
只要把上边这个概念弄精通了那么对复制也就有了自然的驾驭。接下来大家就一步一步来落到实处复制的步调。
第一先来布局出版服务器 (1卡塔尔选中钦定[服务器]节点
(2)从[工具]下拉菜单的[复制]子菜单中选取[文告、订阅服务器和分发]命令
(3卡塔尔系统弹出多少个会话框点[下一步]下一场看着提醒一向操作到成功。
(4卡塔尔当成功了出版服务器的设置以往系统会为该服务器的树形布局中增多叁个复制监视器。同临时间也生成叁个散发数据库(distribution卡塔尔(قطر‎第二创办出版物 (1卡塔尔国选中钦命的劳务器
(2卡塔尔国从[工具]菜单的[复制]子菜单中精选[创建和治本公布]指令。当时系统会弹出贰个会话框
(3State of Qatar选取要开再创版物的数据库,然后单击[始建公布]
(4)在[开创发表起始]的晋升对话框中单击[下一步]系统就能够弹出三个对话框。对话框上的剧情是复制的八个品种。我们今后选第贰个也正是暗许的快速照相发表(别的几个大家能够去拜见扶植)(5卡塔尔单击[下一步]系统要求钦赐能够订阅该布告的数据库服务器类型,SQLSE揽胜极光VE大切诺基允许在区别的数据库如ORACLE或ACCESS之间开展数据复制。不过在那地大家接受运转”SQLSEHighlanderVE宝马X52002″的数据库服务器
(6State of Qatar单击[下一步]系统就弹出三个定义文章的对话框也正是选择要出版的表
(7卡塔尔国然后[下一步]直到操作实现。当成功出版物的创办后创制出版物的数据库也就改为了一个分享数据库。
第三陈设订阅 (1State of Qatar选中内定的订阅服务器
(2State of Qatar从[工具]下拉菜单中选取[复制]子菜单的[倡议订阅]
(3State of Qatar根据单击[下一步]操作直到系统会提醒检查SQLSEHavalVEMurano代理服务的运维景况,实行复制操作的前提条件是SQLSEENCOREVEEvoque代理服必需得已经运转。
(4卡塔尔国单击[完成]。达成订阅操作。
达成位置的步调其实复制相当于水到渠成了。但是什么来精通复制是不是中标了啊?这里可以由此这种情势来火速看是否成功。展开出版服务器上面包车型客车复制——宣布内容——右键发布内容——属性——击活——状态然后点立马运维代理程序接着点代理程序属性击活调解把调节设置为每天爆发,每一分钟,在0:00:00和23:59:59中间。接下来便是决断复制是还是不是成功了张开C:/ProgramFiles/MicrosoftSQLServer/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database上面看是否有部分以时间做为文件名的文书夹差非常的少一分中就发出叁个。假若你还不相信的话就打开你的数据库看在订阅的服务器的钦赐订阅数据库下看是否看出了你刚刚所揭发的表—
二个手工业同步的方案 复制代码 代码如下:
–定期一同服务器上的数量 –例子:
–测量检验境遇,SQLServer二零零一,远程服务器名:xz,顾客名称叫:sa,无密码,测验数据库:test
–服务器上的表(查询分析器连接到服务器上创办卡塔尔createtable[user](idintprimarykey,numbervarchar(4卡塔尔(قطر‎,namevarchar(10卡塔尔卡塔尔 go
–以下在局域网(本机操作卡塔尔(قطر‎–本机的表,state表明:null表示新扩张记录,1代表改进过的笔录,0意味着无变化的笔录
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[user]’)andOBJECTPROPERTY(id,N’IsUserTable’)=1)
droptable[user] GO
createtable[user](idintidentity(1,1卡塔尔,numbervarchar(4卡塔尔,namevarchar(10卡塔尔(قطر‎,statebit)go –成立触发器,维护state字段的值 createtriggert_stateon[user]
afterupdate as update[user]setstate=1
from[user]ajoininsertedbona.id=b.id wherea.stateisnotnull go
–为了方便同步管理,创设链接服务器到要一起的服务器
–这里的中间隔服务器名叫:xz,客户名叫:sa,无密码
ifexists(select1frommaster..sysserverswheresrvname=’srv_lnk’)
execsp_dropserver’srv_lnk’,’droplogins’ go
execsp_addlinkedserver’srv_lnk’,”,’SQLOLEDB’,’xz’
execsp_addlinkedsrvlogin’srv_lnk’,’false’,null,’sa’ go
–创立同步管理的储存进度ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[p_synchro]’)andOBJECTPROPERTY(id,N’IsProcedure’)=1)
dropprocedure[dbo].[p_synchro] GO createprocp_synchro as
–setXACT_ABORTon –运维远程服务器的MSDTC服务
–execmaster..xp_cmdshell’isql/S”xz”/U”sa”/P””/q”execmaster..xp_cmdshell”netstartmsdtc”,no_output”‘,no_output
–运营本机的MSDTC服务
–execmaster..xp_cmdshell’netstartmsdtc’,no_output
–进行分布事务管理,假若表用标识列做主键,用上边包车型客车法子
–BEGINDIST翼虎IBUTEDTRANSACTION –同步删除的数额
deletefromsrv_lnk.test.dbo.[user] whereidnotin(selectidfrom[user]State of Qatar–同步猛增的数据 insertintosrv_lnk.test.dbo.[user]
selectid,number,namefrom[user]wherestateisnull –同步修正的数目
updatesrv_lnk.test.dbo.[user]set number=b.number,name=b.name
fromsrv_lnk.test.dbo.[user]a join[user]bona.id=b.id whereb.state=1
–同步后更新本机的注明 update[user]setstate=0whereisnull(state,1卡塔尔国=1
–COMMITTRAN go –创造作业,定期施行多少同步的积攒进程ifexists(SELECT1frommsdb..sysjobswherename=’数据处理’卡塔尔(قطر‎EXECUTEmsdb.dbo.sp_delete_job@job_name=’数据管理’
execmsdb..sp_add_job@job_name=’数据处理’ –创立作业步骤
declare@sqlvarchar(800卡塔尔,@dbnamevarchar(250)select@sql=’execp_synchro’–数据管理的命令
,@dbname=db_name(卡塔尔(قطر‎–执行多少管理的数据库名
execmsdb..sp_add_jobstep@job_name=’数据管理’, @step_name=’数据同步’,
@subsystem=’TSQL’, @database_name=@dbname, @command=@sql,
@retry_attempts=5,–重试次数 @retry_interval=5–重试间距 –创立调解EXECmsdb..sp_add_jobschedule@job_name=’数据管理’, @name=’时间安排’,
@freq_type=4,–每天 @freq_interval=1,–每一日实施叁回@active_start_time=00000–0点执行 go

一、只复制四个表结构,不复制数据 selecttop0*into[t1]from[t2]
二、获取数据库中某些对象的创始脚本 1、先用下边包车型客车剧本创造一个函数
ifexists(select1fromsysobjectswhereid=object_id(‘fgetscript’卡塔尔(قطر‎andobjectproperty(id,’IsInlineFunction’State of Qatar=0卡塔尔国dropfunctionfgetscript go createfunctionfgetscript(
@servernamevarchar(50State of Qatar–服务器名
,@useridvarchar(50卡塔尔(قطر‎=’sa’–客户名,假若为nt验证办法,则为空
,@passwordvarchar(50卡塔尔(قطر‎=”–密码 ,@databasenamevarchar(50State of Qatar–数据库名称
,@objectnamevarchar(250State of Qatar–对象名 卡塔尔returnsvarchar(8000State of Qatar as begin
declare@revarchar(8000State of Qatar–再次来到脚本
declare@srvidint,@dbsidint–定义服务器、数据库集id
declare@dbidint,@tbidint–数据库、表id
declare@errint,@srcvarchar(255卡塔尔国,@descvarchar(255State of Qatar–错误管理变量
–创制sqldmo对象 exec@err=sp_oacreate’sqldmo.sqlserver’,@srvidoutput
if@err〈〉0gotolberr –连接服务器
ifisnull(@userid,”卡塔尔国=”–假若是Nt验证形式 begin
exec@err=sp_oasetproperty@srvid,’loginsecure’,1 if@err〈〉0gotolberr
exec@err=sp_oamethod@srvid,’connect’,null,@servername end else
exec@err=sp_oamethod@srvid,’connect’,null,@servername,@userid,@password
if@err〈〉0gotolberr –获取数据库集
exec@err=sp_oagetproperty@srvid,’databases’,@dbsidoutput
if@err〈〉0gotolberr –获取要获得脚本的数据库id
exec@err=sp_oamethod@dbsid,’item’,@dbidoutput,@databasename
if@err〈〉0gotolberr –获取要博取脚本的对象id
exec@err=sp_oamethod@dbid,’getobjectbyname’,@tbidoutput,@objectname
if@err〈〉0gotolberr –获得脚本
exec@err=sp_oamethod@tbid,’script’,@reoutput if@err〈〉0gotolberr
–print@re return(@re) lberr:
execsp_oageterrorinfoNULL,@srcout,@descout declare@errbvarbinary(4)
set@errb=cast(@errasvarbinary(4))
execmaster..xp_varbintohexstr@errb,@reout set@re=’错误号:’+@re
+char(13卡塔尔国+’错误源:’+@src +char(13卡塔尔+’错误描述:’+@desc return(@re卡塔尔国 end go
2、用法如下 用法如下,
printdbo.fgetscript(‘服务器名’,’客户名’,’密码’,’数据库名’,’表名或其余对象名’State of Qatar3、倘诺要获得Curry全数指标的本子,如如下方式 declare@namevarchar(250卡塔尔国declare#aacursorfor
selectnamefromsysobjectswherextypenotin(‘S’,’PK’,’D’,’X’,’L’) open#aa
fetchnextfrom#aainto@name while@@fetch_status=0 begin
printdbo.fgetscript(‘onlytiancai’,’sa’,’sa’,’database’,@name)
fetchnextfrom#aainto@name end close#aa deallocate#aa
4、注解,此函数是csdn邹建邹老大提供的 三、分隔字符串
借使有三个用逗号分割开的字符串,比方说“a,b,c,d,1,2,3,4“,怎样用t-sql获取这一个字符串有几个要素,获取第多少个要素的值是有一些吗?因为t-sql里从未split函数,也未尝数组的概念,所以只可以本身写多少个函数了。
1、获取成分个数的函数 createfunctiongetstrarrlength(@strvarchar(8000卡塔尔State of Qatarreturnsint as begin declare@int_returnint declare@startint
declare@nextint declare@locationint select@str=’,’+@str+’,’
select@str=replace(@str,’,,’,’,’) select@start=1 select@next=1
select@location=charindex(‘,’,@str,@start) while(@location〈〉0) begin
select@start=@location+1 select@location=charindex(‘,’,@str,@start)
select@next=@next+1 end select@int_return=@next-2 return@int_return
end 2、获取钦点索引的值的函数
createfunctiongetstrofindex(@strvarchar(8000State of Qatar,@indexint=0State of Qatarreturnsvarchar(8000卡塔尔(قطر‎ as begin declare@str_returnvarchar(8000卡塔尔declare@startint declare@nextint declare@locationint select@start=1
select@next=1–借使习贯从0开头则select@next=0
select@location=charindex(‘,’,@str,@start卡塔尔while(@location〈〉0and@index〉@next卡塔尔国 begin select@start=@location+1
select@location=charindex(‘,’,@str,@start卡塔尔 select@next=@next+1 end
if@location=0select@location=len(@strState of Qatar+1–假诺是因为从没逗号退出,则以为逗号在字符串后
select@str_return=substring(@str,@start,@location-@start卡塔尔–@start肯定是逗号之后的职位依然就是初步值1
if(@index〈〉@next卡塔尔(قطر‎select@str_return=”–即使二者不对等,则是因为逗号太少,恐怕@index小于@next的初叶值1。
return@str_return end 3、测试
SELECT[dbo].[getstrarrlength](‘1,2,3,4,a,b,c,d’)
SELECT[dbo].[getstrofindex](‘1,2,3,4,a,b,c,d’,5)四、一条语句实践胜过若干个数据库
笔者要在一条语句里操作分裂的服务器上的分化的数据Curry的分化的表,怎么做呢?
第一种艺术:
select*fromOPENDATASOURCE(‘SQ英雄联盟EDB’,’DataSource=远程ip;UserID=sa;Password=密码’卡塔尔(قطر‎.库名.dbo.表名
第三种格局: 先使用联结服务器:
EXECsp_addlinkedserver’别名’,”,’MSDASQL’,NULL,NULL,’DRIVER={SQLServer};SERVER=远程名;UID=用户;PWD=密码;’
execsp_addlinkedsrvlogin@rmtsrvname=’别名’,@useself=’false’,@locallogin=’sa’,@rmtuser=’sa’,@rmtpassword=’密码’
GO 然后您就能够如下: select*from别名.库名.dbo.表名
insert库名.dbo.表名select*from别名.库名.dbo.表名
select*into库名.dbo.新表名from外号.库名.dbo.表名 go
五、怎么样得到叁个表中全体的字段信息蛙蛙推荐:怎么样获得二个表中全体字段的音讯 先成立贰个视图
Createview田野(fieldState of Qatardesc as
selecto.nameastable_name,c.nameasfield_name,t.nameastype,c.lengthas
length,c.isnullableasisnullable,convert(varchar(30),p.value)asdesp
fromsyscolumnsc joinsystypestonc.xtype=t.xusertype
joinsysobjectsoono.id=c.id
leftjoinsyspropertiesponp.smallid=c.colidandp.id=o.id whereo.xtype=’U’
查询时: Select*fromfielddescwheretable_name=’你的表名’
还会有个更加强的语句,是邹建写的,也写出来吧 SELECT
(casewhena.colorder=1thend.nameelse”end卡塔尔N’表名’, a.colorderN’字段序号’,
a.nameN’字段名’,
(casewhenCOLUMNPROPERTY(a.id,a.name,’IsIdentity’卡塔尔国=1then’√’else”end卡塔尔(قطر‎N’标记’,
(casewhen(SELECTcount(*卡塔尔(قطر‎ FROMsysobjects WHERE(namein (SELECTname
FROMsysindexes WHERE(id=a.id卡塔尔(قطر‎AND(indidin (SELECTindid FROMsysindexkeys
WHERE(id=a.id卡塔尔(قطر‎AND(colidin (SELECTcolid FROMsyscolumns
WHERE(id=a.id卡塔尔AND(name=a.nameState of Qatar卡塔尔(قطر‎卡塔尔国卡塔尔(قطر‎State of QatarState of Qatar卡塔尔AND
(xtype=’PK’State of QatarState of Qatar〉0then’√’else”end卡塔尔(قطر‎N’主键’, b.nameN’类型’,
a.lengthN’占用字节数’, COLUMNPROPERTY(a.id,a.name,’PRECISION’卡塔尔(قطر‎asN’长度’,
isnull(COLUMNPROPERTY(a.id,a.name,’Scale’卡塔尔国,0卡塔尔国asN’小数位数’,
(casewhena.isnullable=1then’√’else”end卡塔尔(قطر‎N’允许空’,
isnull(e.text,”卡塔尔N’默许值’, isnull(g.[value],”State of QatarASN’字段表达’
–into##tx FROMsyscolumnsaleftjoinsystypesb ona.xtype=b.xusertype
innerjoinsysobjectsd
ona.id=d.idandd.xtype=’U’andd.name〈〉’dtproperties’
leftjoinsyscommentse ona.cdefault=e.id leftjoinsyspropertiesg
ona.id=g.idANDa.colid=g.smallid orderbyobject_name(a.id卡塔尔,a.colorder
六、时间格式调换问题因为新开拓的软件需求用有些旧软件生成的一些数码,在时间格式上不联合,只可以手工转变,商讨了一清晨写了三条语句,早先没怎么用过convert函数和case语句,还应该有“+“操作符在差异上下文意况也会起到分裂的效果与利益,把本身搞晕了要,可是今后看来是大致弄好了。
1、把持有“70.07.06“那样的值产生“1968-07-06“ UPDATElvshi
SETshengri=’19’+REPLACE(shengri,’.’,’-‘State of QatarWHERE(zhiyezheng=’139770070153’卡塔尔国 2、在“壹玖柒零-07-06“里提取“70“,“07“,“06“
SELECTSUBST凯雷德ING(shengri,3,2State of QatarASyear,SUBST翼虎ING(shengri,6,2卡塔尔(قطر‎ASmonth,
SUBSTRING(shengri,9,2卡塔尔国ASday FROMlvshi WHERE(zhiyezheng=’139770070153′)3、把一个时光项目字段调换到“1967-07-06“ UPDATElvshi
SETshenling=CONVERT(varchar(4卡塔尔国,YEARubicon(shenlingState of Qatar)+’-‘+CASEWHENLEN(MONTH(shenling卡塔尔卡塔尔=1THEN’0’+CONVERT(varchar(2卡塔尔(قطر‎,
month(shenling卡塔尔卡塔尔国ELSECONVERT(varchar(2卡塔尔(قطر‎,month(shenling卡塔尔国卡塔尔END+’-‘+CASEWHENLEN(day(shenling卡塔尔卡塔尔国=1THEN’0’+CONVERT(char(2State of Qatar,
day(shenling卡塔尔State of QatarELSECONVERT(varchar(2卡塔尔,day(shenling卡塔尔(قطر‎卡塔尔(قطر‎END
WHERE(zhiyezheng=’139770070153’卡塔尔(قطر‎ 七、分区视图
分区视图是升高查询质量的三个很好的方法 –看上面包车型地铁示范 –示例表
createtabletempdb.dbo.t_10(
idintprimarykeycheck(idbetween1and10),namevarchar(10))
createtablepubs.dbo.t_20(
idintprimarykeycheck(idbetween11and20),namevarchar(10))
createtablenorthwind.dbo.t_30(
idintprimarykeycheck(idbetween21and30卡塔尔(قطر‎,namevarchar(10State of Qatar卡塔尔 go –分区视图
createviewv_t as select*fromtempdb.dbo.t_10 unionall
select*frompubs.dbo.t_20 unionall select*fromnorthwind.dbo.t_30 go
–插入数据 insertv_tselect1,’aa’ unionallselect2,’bb’
unionallselect11,’cc’ unionallselect12,’dd’ unionallselect21,’ee’
unionallselect22,’ff’ –更新数据
updatev_tsetname=name+’_履新’whereright(id,1卡塔尔=1 –删除测试deletefromv_twhereright(id,1卡塔尔=2 –显示结果 select*fromv_t go
–删除测量试验 droptablenorthwind.dbo.t_30,pubs.dbo.t_20,tempdb.dbo.t_10
dropviewv_t /**//*–测量试验结果 idname ——————— 1aa_更新
11cc_更新 21ee_更新 ==*/ 八、树型的兑现 –参谋 –树形数据查询示例
–小编:邹建 –示例数据
createtable[tb]([id]intidentity(1,1),[pid]int,namevarchar(20))
insert[tb]select0,’中华夏儿女民共和国’ unionallselect0,’美利坚联邦合众国’
unionallselect0,’加拿大’ unionallselect1,’法国巴黎’ unionallselect1,’北京’
unionallselect1,’吉林’ unionallselect6,’台中’ unionallselect7,’常熟’
unionallselect6,’底特律’ unionallselect6,’长沙’ unionallselect2,’London’
unionallselect2,’迈阿密’ go –查询钦命id的持有子 createfunctionf_cid(
@idint )returns@retable([id]int,[level]int) as begin declare@lint
set@l=0 insert@reselect@id,@l while@@rowcount〉0 begin set@l=@l+1
insert@reselecta.[id],@l from[tb]a,@reb
wherea.[pid]=b.[id]andb.[level]=@l-1 end
/**//**//**//*–假若只体现最精心的子(上边未有子卡塔尔国,则拉长这么些删除
deleteafrom@rea whereexists( select1from[tb]where[pid]=a.[id])
–*/ return end go –调用(查询全部的子卡塔尔selecta.*,层次=b.[level]from[tb]a,f_cid(2)bwherea.[id]=b.[id]
go –删除测验 droptable[tb] dropfunctionf_cid go 九、排序难题CREATETABLE[t]( [id][int]IDENTITY(1,1)NOTNULL,
[GUID][uniqueidentifier]NULL )ON[PRIMARY] GO 上边那句实践5次
inserttvalues(newid(卡塔尔卡塔尔 查看推行结果 select*fromt 1、第一种
select*fromt orderbycaseidwhen4then1 when5then2 when1then3 when2then4
when3then5end 2、第二种 select*fromtorderby(id+2)%6 3、第三种
select*fromtorderbycharindex(cast(idasvarchar),’45123′) 4、第四种
select*fromt WHEREidbetween0and5
orderbycharindex(cast(idasvarchar),’45123′) 5、第五种
select*fromtorderbycasewhenid〉3thenid-5elseidend 6、第六种
select*fromtorderbyid/4desc,idasc 十、一条语句删除一群记录
首先id列是int标志类类型,然后删除ID值为5,6,8,9,10,11的列,这里的cast函数没办法用convert函数替代,並且转移的体系必需是varchar,而无法是char,不然就能够实施出您不期望的结果,这里的“5,6,8,9,10,11“可以是您在页面上赢得的八个chkboxlist构建设成的值,然后用上边包车型地铁一句就全部删
除了,比循环用多条语句高效吧应该。
deletefrom[fujian]wherecharindex(‘,’+cast([id]asvarchar卡塔尔(قطر‎+’,’,’,’+’5,6,8,9,10,11,’+’,’卡塔尔〉0
还也会有一种正是 deletefromtable1whereidin(1,2,3,4State of Qatar十二、获取子表内的一列数据的重新整合字符串
上面这一个函数获取05年已经注册了的某个所的律师,独一八个参数便是事务厅的名目,然后回来zhuce字段里满含05字样的有所律师。
CREATEFUNCTIONfn_Get05LvshiNameBySuo(@p_suoNvarchar(50))
RETURNSNvarchar(2000) AS BEGIN
DECLARE@LvshiNamesvarchar(2000),@namevarchar(50) select@LvshiNames=”
DECLARElvshi_cursorCULX570SOTiggoFOLX570数据Curry有1,2,3,4,5共5条记下,要用一条sql语句让其排序,使它排列成4,5,1,2,3,怎么写?