【问题标题】:check value in xml tag with sql用 sql 检查 xml 标签中的值
【发布时间】:2017-08-17 06:30:09
【问题描述】:

我正在尝试获取并检查 xml 文档中的某些属性值。 标签:

<СведТов НомСтр="" НаимТов="" ОКЕИ_Тов="7966" КолТов="" ЦенаТов="" СтТовБезНДС="" НалСт="" СтТовУчНал="">
</СведТов>

我已经试过了:

SELECT *
FROM table1 a
LEFT JOIN table2 as b ON a.intDocID=b.intDocID 
LEFT JOIN table3 as c ON a.intDocID = c.intOneDocID
WHERE SUBSTRING_INDEX(SUBSTRING_INDEX( CONVERT( c.varBody USING cp1251 ) , 'ОКЕИ_Тов="', -1), '"', 1) > 999 and 
SUBSTRING_INDEX(SUBSTRING_INDEX( CONVERT( c.varBody USING cp1251 ) , 'ОКЕИ_Тов="', -1), '"', 1) < 10000 and
a.intSendTimestamp < UNIX_TIMESTAMP('2017-08-11 23:59:59')

但它不起作用。

【问题讨论】:

  • 你使用的是什么数据库系统?

标签: sql xml tags


【解决方案1】:

如果你使用 mysql,你可以使用 EXTRACTVALUE

类似

ExtractValue(c.varBody, '//СведТов/@ОКЕИ_Тов')

这无论如何都有效

create table foo(varBody text);
insert into foo (varBody) values
(
  '<СведТов НомСтр="" НаимТов="" ОКЕИ_Тов="7966" КолТов="" ЦенаТов="" СтТовБезНДС="" НалСт="" СтТовУчНал="">
</СведТов> '   
  );

SELECT ExtractValue(varBody, '//СведТов/@ОКЕИ_Тов')
from foo;

【讨论】:

    猜你喜欢
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    相关资源
    最近更新 更多