下面的MariaDB语句使用JSON_EXTRACT将JSON转义字符串a
转换为JSON类型的值,然后将该值与其自身进行比较。比较结果为not equal。我认为相等是自反的(除非涉及NULL和NaN的棘手问题),也就是说,值总是等于其自身。我误解了什么?
SELECT
JSON_EXTRACT('"a"', '$'),
JSON_EXTRACT('"a"', '$') =
JSON_EXTRACT('"a"', '$');
服务器信息:
Server: Localhost via UNIX socket
Server type: MariaDB
Server connection: SSL is not being used Documentation
Server version: 10.6.7-MariaDB-2ubuntu1-log - Ubuntu 22.04
Protocol version: 10
User: phpmyadmin@localhost
Server charset: UTF-8 Unicode (utf8mb4)
1条答案
按热度按时间zlwx9yxi1#
显然,解决方案是使用JSON_EQUALS(),它是在MariaDB 10.7中添加的。我没有MariaDB 10.7的示例,所以我无法测试它,而且dbfiddle只能升级到MariaDB 10.6。
但是,您可以取消引用JSON来提取字符串值,并测试是否相等。
| 一种|a=a|
| - -|- -|
| 一种|一个|
https://dbfiddle.uk/?rdbms=mariadb_10.6&fiddle=6fa8c7156e6fe9213bfbf44dd57e2c63