我试图找到一种方法来搜索节点内的字符串,但不包括那些节点的某些子元素的内容.简单明了,我想在文本的段落中搜索一个字符串,不包括作为段落的子元素的脚注.
例如,
我的文件是:
<document>
<p n="1">My text starts here/</p>
<p n="2">Then it goes on there<footnote>It's not a very long text!</footnote></p>
</document>
Run Code Online (Sandbox Code Playgroud)
当我在搜索"text"时,我希望Xpath / XQuery
检索第一个p元素,而不是第二个p元素(其中"text"仅包含在脚注子元素中).
我试过了这个contains()
函数,但它检索了两个p元素.
任何帮助将非常感激 :)
我想<recROw></recROw>
使用XQUERY 获取或返回xml文件中item()的数量.在XQuery中有一种简单的方法吗?
这是我的示例XML数据:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DailyRecord>
<recROw>
<id>1</id>
<name>John Smith</name>
<gender>male</gender>
<status>active</status>
</recROw>
<recROw>
<id>2</id>
<name>James Bond</name>
<gender>male</gender>
<status>active</status>
</recROw>
<DailyRecord>
Run Code Online (Sandbox Code Playgroud)
任何帮助和想法将不胜感激.先感谢您!
我正在尝试提取存储在一些格式不合理的xml列中的货币总和(没有为XML列定义的架构,我猜这是问题的一部分).每当遇到一个0为其值的节点时,我都会收到转换错误.
例:
select xml.value('sum(/List/value)', 'numeric') sum
from (select cast('<List><value>1</value><value>2</value></List>' as xml) xml) a
Run Code Online (Sandbox Code Playgroud)
给出总和3时:
select xml.value('sum(/List/value)', 'numeric') sum
from (select cast('<List><value>0</value><value>0</value></List>' as xml) xml) a
Run Code Online (Sandbox Code Playgroud)
引发错误:"将数据类型nvarchar转换为数字时出错."
在总结一个零值节点列表时,我知道如何让我的查询返回0?
一开始,我写了一个小小的XQuery脚本,专门用于完成一项小任务.现在它发现这个XQuery脚本不完整,我必须解决它.问题是,我的XQuery演变成一个程序,而XQuery是一个痛苦的调试.我需要的东西是:
在命令行中打印一些内容以检查程序当时是否具有正确的节点.
一个调试工具,显示存储的变量
XQuery
提供各种date/time
功能current-dateTime()
,但是我似乎无法找到一个能让我在Epoch之后以毫秒为单位的时间.提取小时,分钟和秒的功能似乎过于单独存在.
获得大纪元时间(即unix时间或类似时间)的正确方法是什么XQuery
?
我有一个表,ID
是integer
和XML
是XML
数据类型.
ID XML
----------------------
1 <Form1>...</Form1>
2 <Form1>...</Form1>
3 <Form2>...</Form2>
4 <Form3>...</Form3>
Run Code Online (Sandbox Code Playgroud)
我如何得到以下结果?
ID XML
-------------
1 Form1
2 Form1
3 Form2
4 Form3
Run Code Online (Sandbox Code Playgroud) 我有一个包含一个XML列的表.我想过滤掉XML中特定属性与字符串匹配的行,基本上是执行WHERE或HAVING.
该表看起来像这样
| id | xml |
Run Code Online (Sandbox Code Playgroud)
和XML类似的东西
<xml>
<info name="Foo">
<data .../>
</info>
<xml>
Run Code Online (Sandbox Code Playgroud)
我想得到@name属性与值匹配的所有ID.
我能够做到以下几点:
SELECT id, xml.query('data(/xml/info/@name)') as Value
FROM Table1
WHERE CAST(xml.query('data(/xml/info/@name)') as varchar(1024)) = @match
Run Code Online (Sandbox Code Playgroud)
但它非常缓慢.
必须有一种更好的方法来过滤查询的输出.
XML文件
<Cities>
<Place>
<City n="New Delhi"></City>
<City n="Chandigarh"></City>
<City n="Mumbai"></City>
</Place>
<Place>
<City n="New Delhi"></City>
<City n="Chandigarh"></City>
</Place>
<Place>
<City n="New Delhi"></City>
<City n="Mumbai"></City>
</Place>
</Cities>
Run Code Online (Sandbox Code Playgroud)
我正在使用以下XQuery -
for $x in doc("sample")/Cities/Place/City
order by $x/@n
return distinct-values($x/@n)
Run Code Online (Sandbox Code Playgroud)
我期待的结果是 -
Chandigarh Mumbai New Delhi
但得到 -
Chandigarh Chandigarh Mumbai Mumbai New Delhi New Delhi New Delhi
请告诉我哪里出错了?
我的应用程序经常需要使用查找来修饰它所服务的文档中的值,以获取各种代码的可读形式.
例如<product_code>PC001</product_code>
,希望被返回为<product_code code='PC001'>Widgets</product_code>
.它并不总是product_code; 有一些不同类型的代码需要类似的行为(其中一些只有几十个例子,其中一些只有几千个.)
我想知道的是在数据库中存储数据的最有效方法是什么?我可以想到两种可能性:
1)每个代码类型一个文档,包含许多元素:
<product-codes>
<product-code code = "PC001">Widgets</product-code>
<product-code code = "PC002">Wodgets</product-code>
<product-code code = "PC003">Wudgets</product-code>
</product-codes>
Run Code Online (Sandbox Code Playgroud)
2)每个代码一个文档,每个文档包含一个<product-code>
如上所述的元素.
(显然,两种选择都包括合理的指数)
这些中的任何一个明显比另一个快吗?还有另一种更好的选择吗?
我的感觉是,每个文档保留一个"东西"通常会更好,因为它在概念上稍微清晰一些(我理解)更适合ML的索引,但在这种情况下,它似乎会导致非常大量的非常小的文件.那是我应该担心的吗?