gpt4 book ai didi

mysql - ExtractValue mysql XML 返回空而不是 NULL

转载 作者:行者123 更新时间:2023-11-29 12:53:46 27 4
gpt4 key购买 nike

我尝试获取 NULL 值,但输出始终为空,我不知道是否与 mysql 配置有关,

查询;

mysql> SELECT ExtractValue('
<?xml version="1.0" encoding="UTF-8"?>
<lista>
<socios>
<inscripcion xsi:nil="true"></inscripcion>
</socios>
</lista>','lista/socios/inscripcion') as value;
+-------+
| value |
+-------+
| |
+-------+
1 row in set (0.00 sec)


mysql> SELECT ExtractValue('
<?xml version="1.0" encoding="UTF-8"?>
<lista>
<socios>
<inscripcion xsi:nil="true" />
</socios>
</lista>','lista/socios/inscripcion') as value;
+-------+
| value |
+-------+
| |
+-------+
1 row in set (0.00 sec)

mysql>\s

mysql Ver 14.14 Distrib 5.5.37,适用于 debian-linux-gnu (x86_64),使用 readline 6.2

连接 ID:53当前数据库:当前用户:root@localhostSSL:未使用当前寻呼机:stdout使用输出文件:''使用分隔符:;服务器版本:5.5.37-0+wheezy1 (Debian)协议(protocol)版本:10连接:通过 UNIX 套接字连接本地主机服务器字符集:latin1数据库字符集:latin1客户端字符集:utf8康涅狄格州字符集:utf8UNIX 套接字:/var/run/mysqld/mysqld.sock正常运行时间:2小时21分33秒

线程:3 问题:3531 慢速查询:0 打开:453 刷新表:1 打开表:135 每秒平均查询:0.415

最佳答案

根据MySQL XML Functions Documentation :

If no matching text node is found for the expression (including the implicit /text())—for whatever reason, as long as xpath_expr is valid, and xml_frag consists of elements which are properly nested and closed—an empty string is returned. No distinction is made between a match on an empty element and no match at all. This is by design.

但是,您可以使用以下方法确定是否确实存在匹配元素:

SELECT ExtractValue('
<?xml version="1.0" encoding="UTF-8"?>
<lista>
<socios>
<inscripcion xsi:nil="true"></inscripcion>
</socios>
</lista>', 'count(lista/socios/inscripcion)') as value;

输出为:

+-------+
| value |
+-------+
| 1 |
+-------+
<小时/>

编辑 1:

got same output, i dont get it at all. how i should force to get a NULL value?

如果返回(修剪后的)字符串的长度为零,则您可以显式返回 NULL

示例:

SELECT if( length( trim( @v:=ExtractValue( '
<?xml version="1.0" encoding="UTF-8"?>
<lista>
<socios>
<inscripcion xsi:nil="true"> </inscripcion>
</socios>
</lista>', '/lista/socios/inscripcion' ) ) ) = 0, NULL, @v ) as value;

+-------+
| value |
+-------+
| NULL |
+-------+

如果可以接受返回仅包含空格的字符串,则可以使用 trim 删除。

关于mysql - ExtractValue mysql XML 返回空而不是 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24393054/

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