欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL 特殊语句(学习笔记)

程序员文章站 2023-12-02 20:53:28
【1】 以xml 返回 (1)未定义属性的 select logisticsid,logisticsname from logisticscompany for xml a...
【1】 以xml 返回
(1)未定义属性的
select logisticsid,logisticsname from logisticscompany for xml auto,elements
(2)定义属性节的
复制代码 代码如下:

select top 21 as tag,
null as parent,
title_id as [titles!1!title_id],
title as [titles!1!title!element],
type as [titles!1!type]
from
titles
for xml explicit

【2】处理大批量数据的添加
复制代码 代码如下:

creat procedure [dbo].[sp_db_insertbatch]
(
@logxml nvarchar(max),
@lasttime datetime,
@currenttime datetime
)
as
begin
begin tran
begin try
--使用openxml()需要一个准备动作:
--定义一个文档指针@xmlhandler,类型为int(sp_xml_preparedocument)。
--使用完后还需要把它释放掉(sp_xml_removedocument)
declare @xmlhandler int;
--openxml()本身返回一个行集,并且需要3个参数和一组列映射定义。
--预先准备好的文档指针@xmlhandler,搜索路径起点,映射标志。
exec sp_xml_preparedocument @xmlhandler output,@logxml;
insert into [dbo].[dbrate]
([rateid]
,[lastmodifytime]
,[lasttime]
,[currenttime])
select [rateid]
,[lastmodifytime]
,@lasttime
,@currenttime
from openxml(@xmlhandler,'/db/dbrate',2)
with( rateid int
,lastmodifytime datetime
)
--释放掉(sp_xml_removedocument)
exec sp_xml_removedocument @xmlhandler;
commit tran
end try
begin catch
rollback tran
end catch
end

【3】转换类型
复制代码 代码如下:

select convert(int,'100.1')
select cast('100' as int)


截取并替换其他字符
select stuff('1347097110',5,6,'*******')
获取id为4附近的四条数据
select top 4 * from student order by abs(4-id)
分组获取 select * from (select row_number() over(partition by sex order by id) as rowindex,* from student) a where rowindex<5
联表删除数据 deletefrom souce from souce inner join student on souce.sid = student.id