declare @xmldoc xml
set @xmldoc=
 '<公司>
   <员工信息>
     <员工>
       <姓名 编号="000001">王林</姓名>
       <性别>男</性别>
       <年龄>43</年龄>
     </员工>
     <员工>
       <姓名 编号="000002">陈燕</姓名>
       <性别>女</性别>
       <年龄>25</年龄>
     </员工>
   </员工信息>
  </公司>'
以上为自定义的xml数据类型,现在我要用value()方法返回姓名为陈燕的编号值
这个用t-sql查询语言要如何实验?
下面是我自己做的结果
declare @number char(6)
select @number [email protected]('(/公司/员工信息/员工/姓名/@编号)[2]','char(6)')
select @number as 员工编号
运行结果如下:
员工编号
000002虽然这样也能得到陈燕的编号,但是如果数据量比较多的时候,总不可能逐个去数吧!希望有大侠能给出替代方法

解决方案 »

  1.   

    我觉得你应该把xml里面数据的主键取出来,然后再查询想要的数据。这是我以前公司的做法,不知道适合不适合你现在的应用环境。
      

  2.   

    对于xml的数据真心不太懂,xml里面数据有主键的么?我是自学的
      

  3.   

    不是说xml的主键,而是你的表的主键,比如编号,然后再到结果集里面找对应的编号从而带出其他数据。
      

  4.   

    没有表,要查询的就是 @xmldoc这个里面的内容