gpt4 book ai didi

MYSQL EXTRACTVALUE 与 "<"小于运算符返回 NULL?

转载 作者:行者123 更新时间:2023-11-29 09:45:33 26 4
gpt4 key购买 nike

我将 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 的文档中提到了这一点:

NULL is returned if xml_frag contains elements which are not properly nested or closed, and a warning is generated, as shown in this example: [...]

您将在以下示例中看到,当您使用 < 时出现错误/警告作为内容,因为它看起来像是新 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 block 时,你将得到正确的值。

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)

关于MYSQL EXTRACTVALUE 与 "<"小于运算符返回 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55764551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com