您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页MariaDB SQL 踩坑 (Version: 10.4.12/CentOS 7)

MariaDB SQL 踩坑 (Version: 10.4.12/CentOS 7)

来源:叨叨游戏网

一、IF(expr1,expr2,expr3)

预期返回 int,结果返回 string。

MariaDB [(none)]> select if(1=1, 1, "2"), @@version;
+-----------------+----------------------------------------+
| if(1=1, 1, "2") | @@version                              |
+-----------------+----------------------------------------+
| 1               | 10.4.12-MariaDB-1:10.4.12+maria~bionic |
+-----------------+----------------------------------------+

MariaDB [(none)]> select if(1=1, 1, 2), @@version;
+---------------+----------------------------------------+
| if(1=1, 1, 2) | @@version                              |
+---------------+----------------------------------------+
|             1 | 10.4.12-MariaDB-1:10.4.12+maria~bionic |
+---------------+----------------------------------------+

返回类型,由 expr2, expr3 决定,如果 expr2, expr3 任一参数为string,即使另一参数是 int,也返回 string。注意:返回值 "1",如果是数字,显示时右对齐。

 

二、JSON_SEARCH(json_doc, return_arg, search_str[, escape_char[, path] ...])

预期返回可直接使用的 path string,结果返回的 path string 外头又包了双引号。

MariaDB [(none)]> SET @jsn = '[1,2,3,4,5]';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SET @path = JSON_SEARCH(@jsn, 'one', 2);
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SET @v1 = JSON_REMOVE(@jsn, @path);
Query OK, 0 rows affected, 1 warning (0.000 sec)

MariaDB [(none)]> SET @v2 = JSON_REMOVE(@jsn, json_value(@path,'$'));
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SELECT @path,json_value(@path,'$'), @v1, @v2;
+--------+-----------------------+------+--------------+
| @path  | json_value(@path,'$') | @v1  | @v2          |
+--------+-----------------------+------+--------------+
| "$[1]" | $[1]                  | NULL | [1, 3, 4, 5] |
+--------+-----------------------+------+--------------+

三、JSON_TYPE(json_val),JSON_VALUE(json_doc, path)

预期返回 STRING,结果返回 INTEGER / NULL

MariaDB [(none)]> SET @jsn = '["1",1,"4K","KK"]';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SET @v1 = JSON_VALUE(@jsn, '$[0]');
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SET @v2 = json_value(@jsn, '$[1]');
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SET @v3 = json_value(@jsn, '$[2]');
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SET @v4 = json_value(@jsn, '$[3]');
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SELECT @v1, JSON_TYPE(@v1),@v2, JSON_TYPE(@v2),@v3, JSON_TYPE(@v3),@v4, JSON_TYPE(@v4), JSON_TYPE('"4"');
+------+----------------+------+----------------+------+----------------+------+----------------+------------------+
| @v1  | JSON_TYPE(@v1) | @v2  | JSON_TYPE(@v2) | @v3  | JSON_TYPE(@v3) | @v4  | JSON_TYPE(@v4) | JSON_TYPE('"4"') |
+------+----------------+------+----------------+------+----------------+------+----------------+------------------+
| 1    | INTEGER        | 1    | INTEGER        | 4K   | INTEGER        | KK   | NULL           | STRING           |
+------+----------------+------+----------------+------+----------------+------+----------------+------------------+

头疼,json 数据的解析思路跟不上,为什么 json_value 返回的数据,究竟是怎么处理双引号的。

四、JSON_MERGE(json_doc, json_doc[, json_doc] ...)

文档中的这句话,没看仔细,以为是用  JSON_MERGE_PATCH 代替已在新版本废弃的 JSON_MERGE。而实际上不是,替代者是后面提及的异名函数 JSON_MERGE_PRESERVE

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务