json-table官方文档地址
https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html#function_json-table
json数组中包含json对象输出
SET @delete_result1 = (CONCAT('{', '"delete_sql"', ': ', '"DELETE FROM user where ac_code = 111"', ',', '"delete_size"', ': ', 11, '}'));
SET @delete_result2 = (CONCAT('{', '"delete_sql"', ': ', '"DELETE FROM user where ac_code = 111"', ',', '"delete_size"', ': ', 22, '}'));
SET @delete_result_print = @delete_result1;
SET @delete_result_print = (SELECT CONCAT_WS(',', @delete_result_print, @delete_result2));
SET @delete_result_print = (SELECT CONCAT('[', @delete_result_print, ']'));
SELECT *
JSON_TABLE(
@delete_result_print,
"$[*]"
COLUMNS(
row_index FOR ORDINALITY,
delete_sql TEXT PATH "$.delete_sql",
delete_size INT PATH "$.delete_size"
) AS tt;
+-------------------------------------------------------------------+
| row_index | delete_sql | delete_size |
+-------------------------------------------------------------------+
| 1 | DELETE FROM user where ac_code = 111 | 11 |
+-------------------------------------------------------------------+
| 2 | DELETE FROM user where ac_code = 111 | 22 |
+-------------------------------------------------------------------+
json数组中包含普通类型对象输出
SELECT
JSON_TABLE ( '["11", "22"]', '$[*]'
COLUMNS
NESTED PATH '$' COLUMNS ( result INT PATH '$' ) )
AS tt;
+----------+
| result |
+----------+
| 11 |
+----------+
| 22 |
+----------+
SELECT
JSON_TABLE (
'[{"a": 1, "b": [11,111]}, {"a": 2, "b": [22,222]}]',
'$[*]' COLUMNS (
a INT PATH '$.a',
NESTED PATH '$.b[*]' COLUMNS ( b1 INT PATH '$' ),
NESTED PATH '$.b[*]' COLUMNS ( b2 INT PATH '$' )
) AS tt;
+------+------+------+
| a | b1 | b2 |
+------+------+------+
| 1 | 11 | NULL |
| 1 | 111 | NULL |
| 1 | NULL | 11 |
| 1 | NULL | 111 |
| 2 | 22 | NULL |
| 2 | 222 | NULL |
| 2 | NULL | 22 |
| 2 | NULL | 222 |
+------+------+------+
SELECT
JSON_TABLE ( '[{"a": 1, "b": [11,111]}, {"a": 2, "b": [22,222]}]', '$[*]'
COLUMNS (
a INT PATH '$.a',
NESTED PATH '$.b[*]' COLUMNS ( b INT PATH '$' )
AS tt;
+------+------+
| a | b |
+------+------+
| 1 | 11 |
| 1 | 111 |
| 2 | 22 |
| 2 | 222 |
+------+------+
SELECT
JSON_TABLE ( '[{"a": 1, "b": [11,111]}, {"a": 2, "b": [22,222]}, {"a":3}]', '$[*]'
COLUMNS (
a INT PATH '$.a',
NESTED PATH '$.b[*]' COLUMNS ( b INT PATH '$' )
AS tt
WHERE b IS NOT NULL;
+------+------+
| a | b |
+------+------+
| 1 | 11 |
| 1 | 111 |
| 2 | 22 |
| 2 | 222 |
+------+------+
SELECT
JSON_TABLE ( '[{"a": 1, "b": [11,111]}, {"a": 2, "b": [22,222]}]', '$[*]'
COLUMNS ( NESTED PATH '$.b[*]' COLUMNS ( b INT PATH '$' ) ) )
AS tt;
+------+
| b |
+------+
| 11 |
| 111 |
| 22 |
| 222 |
+------+
# 删除sql所对应的json对象1SET @delete_print1 = (CONCAT('{', '"delete_sql"', ': ', '"DELETE FROM user where ac_code = 111"', ',', '"delete_size"', ': ', 11, '}'));# 删除sql所对应的json对象2SET @delete_print2 = (CONCAT('{', '"delete_sql"', ': ', '"DELETE FROM user wher..
length:获取参数值的字节个数(注意不是字符个数)
SELECT LENGTH('haosy') 结果是5
SELECT LENGTH('haosy郝') 结果是8 不是6(是字节个数不是字符个数,因编码格式是utf-8,所以一个汉字占3个字节)
concat(str1,str2,…) 拼接字符串
SELECT CONCAT(NAME,'___',nikcname)
FROM stringtable
upper(str)、lower(str) 转换大小写
upper:变大写
SELECT UPPER('h
1. 通过 Navicat Mysql 或 Navicat Premium 先到处表成json文件。
2. 把导出的文件复制到 Json2Lua 文件夹下的 json文件夹下。
3. 双击运行 run.bat
4. 没有报错的话,会把转换后的文件输出到 lua文件夹下。
FROM zichaxun t1
inner join JSON_TABLE(CONCAT('["', REPLACE('1,2', ',', '","'), '"]'), "$[*]" COLUMNS (score2 varchar(20) PATH "$")) t2
on JSON_CONTAINS(t2.score2, CAST(t1.score as JS...
这将会从 `users` 表中选择所有行,并将每一行的数据转换为一个 JSON 对象。对象的键名为 `name`, `age`, 和 `email`,值分别对应于该行中同名的列。
如果你希望将多行转换为单个 JSON 数组,你可以使用 JSON_ARRAYAGG 函数:
SELECT JSON_ARRAYAGG(JSON_OBJECT('name', name, 'age', age, 'email', email))
FROM users;
这将会生成包含所有行的 JSON 数组,每一行都被转换为一个 JSON 对象。