簡體   English   中英

MYSQL EXTRACTVALUE中的“ <”小於運算符是否返回NULL?

[英]MYSQL EXTRACTVALUE with “<” Less Than Operator returns NULL?

我將MYSQL與EXTRACTVALUE命令一起使用,並且當使用“ <”小於運算符時,以下代碼返回NULL。 但是,“大於運算符”可以按預期工作。 為什么?

select EXTRACTVALUE('<TrackerQuery>
  <Column>*</Column>
  <View> view_sms_speqs</View>
  <Filters>
    <Filter>
      <FilterColumn>DateTested</FilterColumn>
      <FilterOperator><</FilterOperator>
      <FilterValue>2019-04-18</FilterValue>
    </Filter>
  </Filters>
</TrackerQuery>', CONCAT('//TrackerQuery//Filters//Filter[', 1, ']//FilterOperator'));

問題是內容<tag><</tag>無效,導致返回NULL EXTRACTVALUE的文檔中提到了這EXTRACTVALUE

如果xml_frag包含未正確嵌套或關閉的元素,並且生成警告,則返回NULL ,如以下示例所示:[...]

在以下示例中,您將<用作內容時會出現錯誤/警告,因為它看起來像是新XML元素的開始。

mysql> SELECT EXTRACTVALUE('<abc><def><</def></abc>', '//abc//def');
+-------------------------------------------------------+
| EXTRACTVALUE('<abc><def><</def></abc>', '//abc//def') |
+-------------------------------------------------------+
| NULL                                                  |
+-------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> SHOW WARNINGS;
+---------+------+-------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                   |
+---------+------+-------------------------------------------------------------------------------------------+
| Warning | 1525 | Incorrect XML value: 'parse error at line 1 pos 13: '<' unexpected (ident or '/' wanted)' |
+---------+------+-------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

有趣的是,值&lt; 無法正常工作。

mysql> SELECT EXTRACTVALUE('<abc><def>&lt;</def></abc>', '//abc//def');
+----------------------------------------------------------+
| EXTRACTVALUE('<abc><def>&lt;</def></abc>', '//abc//def') |
+----------------------------------------------------------+
| &lt;                                                     |
+----------------------------------------------------------+
1 row in set (0.00 sec)

但是,當您將其放在CDATA塊中時,您將獲得正確的值。

mysql> SELECT EXTRACTVALUE('<abc><def><![CDATA[<]]></def></abc>', '//abc//def');
+-------------------------------------------------------------------+
| EXTRACTVALUE('<abc><def><![CDATA[<]]></def></abc>', '//abc//def') |
+-------------------------------------------------------------------+
| <                                                                 |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM