SQL Server2005的XML数据类型之基础篇2
value方法
当你不想解释整个查询的结果而只想得到一个标量值时,这个value方法是很有帮助的。这个value方法用于查询XML并且返回一个原子值。
这个value方法的语法如下:
value(XQuery,datatype)
借助于value方法,你可以从XML中得到单个标量值。为此,你必须指定XQuery语句和你想要它返回的数据类型,并且你可以返回除了XML数
据类型外的任何数据类型。例如,如果你想得到每一个小组中的第一个投球手的名字,你可以编写如下形式的查询语句:
进行一次查询以得到单个值
以下为引用的内容:
SELECT TeamDoc.value(
'(/Team/Players/Pitcher/@name)[1]',
'nvarchar(max)')
AS FirstPitcher
from Team
在每一个小组的第一个投球手的标量值中的这个查询结果返回值如下:
以下为引用的内容:
FirstPitcher
------------------------------
John Smoltz
(1 row(s) affected)
注意,query和value方法之间的不同在于,query方法返回一个XML数据类型-它包含查询的结果;而value方法返回一个带有查询结果的非
XML数据类型。另外,value方法仅能返回单个值(或标量值)。如果你试图创建一个使用value方法返回多于一个值的XQuery表达式,你将得到一
个错误。
modify方法
尽管XQuery标准并没有提供一种更新XML的机制,但是SQL Server 2005提供了一种方法用于即时地修改一个XML对象的一部分。这意味着,
你不必仅为了修改而检索一个完整的XML文档。为了即时修改一个文档,你可以采用一种结合方式-Modify方法和SQL Server 2005的新的XML数
据修改语言(XML DML)。
Modify方法的语法是:
modify(<XMLDML>)
该方法仅使用一个参数:XML DML语句。XML DML也类似于SQL的insert,update和delete语法,但是并不一样。例如,你可以通过使用
insert DML语句来修改XML:
以下为引用的内容:
SET @doc.modify('
insert <Pitcher name="Jaret Wright"/> as last
into (/Team/Players)[1]
')
另外,你还可以通过调用一个UPDATE语句并修改一个XML列来实现同样目的:
修改一个XML文档而不完全替换它:
以下为引用的内容:
UPDATE Team
SET TeamDoc.modify('
insert <Pitcher name="Jaret Wright"/> as last
into (/Team/Players)[1]
')
WHERE TeamDoc.exist('/Team[@name="Braves"]') = 1
注意,在这个UPDATE语句中的SET子句并不遵循你过去编写SQL时所使用的SET x = y 模式。该语法假定,你能够提供一个完全新的值来代
相关文档:
参考文献:http://www.cnblogs.com/chenxizhang/archive/2009/04/23/1441913.html
SQL Server提供四种方式连接数据库服务器:
1. share memory: 只适用于客户端和服务器端在同一台机器上,才能采用的连接
2. Named pipe:
在局域网(LAN)内实现连接,一个进程使用一部分的内存来向进程的另一端传递消息,一个进程的输出是另外 ......
select * from tableName where datediff(week,dateField,getdate())=0
这样查出来的结果是从星期天到星期六(老外默认星期天是一周的第一天).
如果想以星期一作为第一天的话,两个时间都需要减一,如下:
select * from tableName where datediff(week,dateField-1,getdate()-1)=0 ......
一个定义Email的例子
<?xml version="1.0">
<!DOCTYPE message[
<!ELEMENT message(header,body,signature,footer)> --定义了message的子元素
<!ELEMENT header(date,from,to,subject,banner)> --header还有子元素
<!ELEMENT ......
MSSQL还原数据库失败,提示如下: 还原对与服务器 失败。(Microsoft.SqlServer.Smo) 其它信息: ┃ ┗→执行Transact-SQL语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionsInfo) ┃ ┗→不能选择文件或文件组“……”用于此操作。 RESTORE DATABASE 正在异常终止。(Microsoft SQL Server, 错误:3219) 出现此 ......
在SQL SERVER中,有时需要合多列值到行的需求,常见的方法有:1.创建自定义函数,2.使用游标法进行字符串合并。3.使用临时表实现字符串合并。 数据: DEPTNO EMPS
------ ----------
10 CLARK
10 KING
10 MILLER
20 SMITH
20 ADAMS
20 FORD
20 SCOTT
20 JONES
30 ALLEN
30 BLAKE
30 MARTIN
30 JAMES
30 ......