Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 带SQL Server的XPath,不带命名空间_Sql Server_Xpath_Xquery - Fatal编程技术网

Sql server 带SQL Server的XPath,不带命名空间

Sql server 带SQL Server的XPath,不带命名空间,sql-server,xpath,xquery,Sql Server,Xpath,Xquery,我有一个名为image的文本字段,它保存XML。下面是一个子集。没有定义名称空间,因此我使用通配符“*” <?xml version="1.0"?> <NewDataSet> <delivery> <ticket>A430901474</ticket> <revision>00A</revision> </delivery> <tickets> <

我有一个名为image的文本字段,它保存XML。下面是一个子集。没有定义名称空间,因此我使用通配符“*”

<?xml version="1.0"?>
<NewDataSet>
  <delivery>
    <ticket>A430901474</ticket>
    <revision>00A</revision>
  </delivery>

  <tickets>
    <ticket>A430901474</ticket>
    <revision>00A</revision>

    <state>VA</state>
    <county>PRINCE WILLIAM</county>
    <lot>1</lot>
    <st_from_address>15414</st_from_address> 
  </tickets>
</NewDataSet>
现在我回来了:

**LotNo**
<lot>1</lot>
**LotNo**
1.

您应该能够使用
text()
节点测试仅获取文本值:

DECLARE @x xml
SET @x =  (SELECT [image]
  FROM [QM].[dbo].[ticket]
  where ticket_id = 83831107)
SELECT @x.query('(/*:NewDataSet/*:tickets/*:lot/text())[1]')

您应该能够使用
text()
节点测试仅获取文本值:

DECLARE @x xml
SET @x =  (SELECT [image]
  FROM [QM].[dbo].[ticket]
  where ticket_id = 83831107)
SELECT @x.query('(/*:NewDataSet/*:tickets/*:lot/text())[1]')
返回xml。。。所以,它不适合你的任务。因为您只请求一个值,所以可能需要使用():

返回xml。。。所以,它不适合你的任务。因为您只请求一个值,所以可能需要使用():


谢谢各位。两种解决方案都奏效了@Cannon,我的每张票只会有一个Lot值,但我将其添加到了我的库中,因为我肯定会有其他情况下存在节点列表。有没有办法测试图像文本字段,比如它是否是XML(或者甚至让@x认为它是XML)而不返回任何值?一些票据被解析为XML,而其他票据则是纯文本。纯文本不会有很多内容。@SpringerRider这可能是另一个问题。谢谢大家。两种解决方案都奏效了@Cannon,我的每张票只会有一个Lot值,但我将其添加到了我的库中,因为我肯定会有其他情况下存在节点列表。有没有办法测试图像文本字段,比如它是否是XML(或者甚至让@x认为它是XML)而不返回任何值?一些票据被解析为XML,而其他票据则是纯文本。纯文本不会有很多内容。@SpringerRider这可能是另一个问题。其中一个答案解决了您的问题吗?如果是这样,请不要忘记单击灰色复选标记将该答案标记为已接受。其中一个答案是否解决了您的问题?如果是这样,请不要忘记单击灰色复选标记,将该答案标记为已接受。
select @xml.value('(/*:NewDataSet/*:tickets/*:lot)[1]','int')
select 
 t.c.value('.', 'int') as Lot
from @xml.nodes('/*:NewDataSet/*:tickets/*:lot') as t(c)