【问题标题】:How to locate Rows in SQL Table where xPath如何定位 SQL 表中 xPath 所在的行
【发布时间】:2009-01-29 15:56:49
【问题描述】:

想象一下下表:

-------------------------------------------------------------
   ID   |    XML
-------------------------------------------------------------
    1   | <Form><object ID="1" /></Form>
    2   | <Form><object ID="2" /></Form>
    3   | <Form><object ID="2" /></Form>
-------------------------------------------------------------

我需要一些 SQL 来查找 ID 和 Form/object@ID 不相同的所有行

我正在使用 SQL2000。 ID 是 int 字段,XML 是 Text 字段。

上表中的数据也被简化了,表单标签内还会有额外的变化元素。

我该怎么做?我可以这样做吗?

【问题讨论】:

  • SQL2000?您是指 Microsoft SQL Server 2000 吗?
  • 是的,我正在使用 MSSQL2000

标签: sql sql-server xml xpath


【解决方案1】:

我认为在 SQL2000 中没有很好的方法来做到这一点。 SQL2005可以使用xml数据类型来拉取值。

我的建议是这样的

SELECT *
FROM TABLE t
WHERE CHARINDEX('ID="' + CAST(t.ID AS VARCHAR) + '"',t.XML) = 0

但它又脏又慢。

【讨论】:

  • 快速我可以做到。您刚刚从 3439 行中找到了我需要找到的 11 行……非常感谢。
【解决方案2】:

您可以在您的选择语句中尝试包含,但您需要确保您的表格是全文索引的。

顺便说一句,字段名不错...

【讨论】:

    猜你喜欢
    • 2014-10-20
    • 1970-01-01
    • 2014-05-26
    • 2015-11-13
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多