2011-07-20 45 views
0

我需要将以下MSSQL查询转换为MySQL。查询从xpath中的“page”元素中选择“id”属性的值。我希望MySQL查询分别返回值为1,2,3的3行。有人知道如何在MySQL中做到这一点?请告诉我。如何选择XML属性 - 将MSSQL转换为MySQL

DECLARE @InputXML as xml 
SET @InputXML = '<pages><page id="1"/><page id="2"/><page id="3"/></pages>' 


SELECT 
    Node.value('@id', 'Bigint') AS ID 
    FROM @InputXML.nodes('/pages/page') TempXML (Node)) 

回答

-1

编辑:忘记我刚才所说的。

礼貌戴夫,你可能想看看这个:

http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html


(留在原位,以供参考前面的答案):

MySQL没有做XML。所以简短的回答是:“你不能”。

长的答案是,根据上下文的运行情况,您有几个选项。

  1. 将数据标准化为适当的SQL模式,而不是依赖SQL中的XML。
  2. 从数据库中拉取XML作为普通字符串,然后在您的逻辑(PHP,C#,VB,无论您使用的是什么)中执行XML处理。不幸的是,这意味着你不能通过数据库上的xpath表达式来过滤你的数据,所以你必须得到所有的候选行,然后丢弃你不想要的行。
  3. 完全抛弃数据库(至少对于这个部分),只是存储XML文件。如果存储和检索XML文件是您的所有应用程序都做的,并且您没有添加任何元信息,那么数据库几乎没有任何好处。
+1

MySQL的XML:http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html – Dave

+0

不知道。咩。 – tdammers