------------------------------------<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
-- Author: happyflystone
-- Date:2008-11-23 22:17:36
-- Description:利用xml改造以前在2000下的合并相同项目的函数
------------------------------------
-- 运行环境:
SELECT @@version
/*
-------------------------------------------------
Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)
Apr 14 2006 01:12:25
Copyright (c) 1988-2005 Microsoft Corporation
Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
(1 行受影响)
*/
-- Test Data: TA
IF OBJECT_ID('TA') IS NOT NULL
DROP TABLE TA
GO
CREATE TABLE TA(ID INT,DATA VARCHAR(50))
INSERT TA VALUES(1,'aa')
INSERT TA VALUES(1,'bb')
INSERT TA VALUES(1,'cc')
INSERT TA VALUES(2,'eee')
INSERT TA VALUES(2,'fff')
GO
-- 先来看看一个合并的例子:
CREATE FUNCTION F_STR(@ID INT)
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @S VARCHAR(100)
SELECT @S = ISNULL(@S+',','')
+DATA
FROM TA
WHERE ID = @ID
RETURN @S
END
GO
SELECT ID,DBO.F_STR(ID) AS COL
FROM TA
GROUP BY ID
/*
ID COL
----------- ----------------------------
1 aa,bb,cc
2 eee,fff
*/
DROP FUNCTION F_STR
GO
-- 下面我们利用XML来合并相同项,我们创建一个合并同类项的函数。
CREATE FUNCTION F_STR(@ID int)
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @x XML,@ret VARCHAR(100)
SET @x=
(SELECT DATA
FROM TA
WHERE ID = @ID
FOR XML PATH(''),ROOT('v'));
SELECT @ret = CAST(
@x.query('
<v>
{ for $i in //DATA
return concat(string($i),",")
}
</v>').value('/v[1]','VARCHAR(100)')
AS VARCHAR(100))
RETURN @ret
END
GO
-- 运行及结果,并删除函数
SELECT ID,DBO.F_STR(ID) AS COL
FROM TA
GROUP BY ID
/*
ID COL
----------- ----------------------------
1 aa,bb,cc
2 eee,fff
*/
DROP FUNCTION F_STR
-- 最后我贴上经常使用XML语法合并同类项一般SQL写法:
-- 1 (AUTO):
SELECT
ID,
[VALUES]=STUFF(REPLACE(REPLACE((SELECT DATA
FROM TA
WHERE ID=T.ID FOR XML AUTO),
'"/><TA DATA="',','),
'"/>',''),1,10,'')
FROM TA T
GROUP BY ID
-- 2:(OUTER APPLY,AUTO)
SELECT *
FROM(
SELECT DISTINCT
id
FROM ta
)A
OUTER APPLY(
SELECT
[bbb]= STUFF(REPLACE(REPLACE(
(
SELECT data FROM ta N
WHERE id = A.id
FOR XML AUTO
), '<N data="', ','), '"/>', ''), 1, 1, '')
)N
-- 3:(PATH)
SELECT
ID,
[VALUES]=STUFF((SELECT ','+LTRIM(DATA)
FROM TA T
WHERE ID=TA.ID FOR XML PATH('')), 1, 1, '')
FROM TA
GROUP BY ID
-- 上面的SQL运行结果都是一样,如下:
/*
ID
----------- ----------------------------
1 aa,bb,cc
2 eee,fff
*/
分享到:
相关推荐
### ORACLE操作XML函数 #### 一、XMLTYPE_instance与XPath_string 在Oracle数据库中,`XMLTYPE`是一种专门用于存储XML数据的数据类型。通过使用`XMLTYPE`字段,可以有效地管理和查询XML文档。其中,`XPath_string`...
在机器视觉领域,HALCON是一种广泛...综上所述,HALCON的XML文件处理函数为用户提供了强大且灵活的工具,用于在机器视觉项目中管理和交换数据。通过熟练掌握这些函数,开发者可以实现更高效、更具扩展性的解决方案。
Gooseeker可能利用DOM解析XML,以便于合并操作。 3. **XPath表达式**:XPath是一种在XML文档中查找信息的语言,可以用来选取节点或节点集。在合并过程中,XPath可能被用于定位和选择需要合并的部分。 4. **数据...
在本次的任务中,我们将探讨如何使用XSL来合并两个结构相同的XML文件。 首先,理解XML文件的结构至关重要。XML文件由一系列元素组成,每个元素都有一个唯一的标签,可以包含文本、属性以及子元素。当两个XML文件...
本项目"xml多个文件合并(delphi)"提供了Delphi操作XML文件的示例代码,帮助开发者了解如何在Delphi中合并多个XML文件。 首先,我们需要理解XML文件的基本结构。XML文件由元素(Element)、属性(Attribute)、...
自己写的c#下的xml读写函数,希望能给新手带来帮助
将多个xml格式文件,高效合并为一个标准的xml格式文件,输出为一个xml格式文件。注:在文件层面的操作,不需要逐个解析节点。
在C#编程中,处理XML数据通常涉及到几个关键的类和函数,这些工具使得开发者能够方便地读取、写入和操作XML文档。 在标题中提到的“XML数据读写函数.类”,我们可以推断这是C#中用于XML操作的一些自定义类或方法,...
XML(eXtensible Markup Language)则是一种用于存储和传输数据的标准格式,它的结构化特性使得它在数据交换、配置文件和文档存储等方面非常有用。本教程将深入讲解如何使用C#来实现XML文件的读取、写入和合并。 ...
Oracle 中的 XML 函数是指在 Oracle 数据库中用于处理 XML 数据的函数。这些函数可以用于 SELECT 语句,也可以用于 UPDATE 和 WHERE 语句。学习这些函数可以使得保存的数据更加具有可读性。 Oracle 提供了多种 XML...
以下我们将详细探讨如何利用XSL中的各种函数为XML显示提供灵活性。 1. **字符串处理函数**: - `string()`:将值转化为字符串。 - `concat()`:连接多个字符串。 - `substring()`:提取字符串的一部分。 - `...
在Flex中,我们可以利用XML对象的appendChild()方法将一个XML节点添加到另一个XML节点的末尾,从而实现XML文档的合并。同时,还可以使用XMLList的concat()方法将多个XMLList对象组合成一个新的XMLList。 接下来,...
总的来说,TinyXML库为C++开发者提供了一个简单易用的XML处理工具,通过理解和应用TinyXML头文件和cpp函数,我们可以方便地在项目中读取、写入和操作XML数据。这个库的轻量级特性使得它成为嵌入式系统和其他资源受限...
- 如何在XML中定义控件和事件处理函数,以及如何在C++代码中映射这些函数。 通过阅读和理解这个源码,你可以了解到DUILIB如何利用XML来实现灵活的界面设计,以及如何通过C++代码控制和扩展这个过程。这对于深入学习...
这个压缩包中的内容可能是关于如何在VC++环境下使用特定的XML操作类和函数的实例教程。 首先,让我们讨论XML的基本概念。XML文档由一系列元素构成,每个元素可以有属性、子元素和文本内容。元素通过开始标签和结束...
通过这样的项目示例,开发者可以学习到如何在实际项目中操作XML文件,这对于数据持久化和配置管理等方面的应用非常有用。同时,这个示例也展示了C#对XML的强大支持,以及如何利用面向对象的特性来处理XML数据。
综上所述,`xml2struct`是MATLAB开发中的一个实用工具,它利用MEX函数的优势,提供了一种快速、高效的XML数据导入方案,使得用户能够在MATLAB环境中无缝处理XML数据。在处理大量或复杂结构的XML数据时,这种工具的...
当eclipse项目add library后,运行项目时,eclipse并不会将library的assets和xml的配置,合并到项目中,此时需要手动复制所有library下的assets和AndroidManifest.xml设置到项目下的assets和xml。 这个工具可以代替...
在项目中,可能包括以下关键类或函数: - `XMLDocument`:代表整个XML文档,提供加载、保存和根节点的访问功能。 - `XMLElement`:表示XML的元素节点,包含子节点、属性等信息,提供添加、删除和查找子元素的方法。...