Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL и JSON - трансформирайте масива в редове

Ето три начина да конвертирате вашия масив в редове. Използване на същата предполагаема стойност на JSON:

SET @j = '[10, 20, {"a": "bbb"}]';

Използване на вградена таблица с числа. Съвместим с MySQL и MariaDB:

WITH sequenceGenerator (sequenceNumber) AS (
    SELECT 0 AS sequenceNumber
    UNION ALL
    SELECT 1
    UNION ALL
    SELECT 2
)
SELECT
    JSON_EXTRACT(@j, CONCAT('$[', sequenceNumber, ']')) AS arrayValue
FROM
    sequenceGenerator;

Използване на MySQL 8.0.4+ JSON_TABLE():

SELECT
    arrayValue
FROM
    JSON_TABLE(
        @j,
         '$[*]'
        COLUMNS(
            arrayValue JSON PATH '$')
    ) AS tt;

Използване на MariaDB SEQUENCE Engine, за да се отървете от вградената таблица с последователности:

SELECT
    JSON_EXTRACT(@j, CONCAT('$[', seq, ']')) AS arrayValue
FROM
    seq_0_to_2;

За да направите по-общ в MariaDB, използвайте максималната "най-добра предположение" за дължината на масива, след което ограничете последователността до дължината на JSON. Този пример предполага, че най-големият масив ще има 1024 или по-малко елемента:

SELECT
    JSON_EXTRACT(@j, CONCAT('$[', seq, ']')) AS arrayValue
FROM
    seq_0_to_1024 AS sequenceTable
WHERE
    sequenceTable.seq < JSON_LENGTH(@j);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Master To Master репликация

  2. 5 начина да проверите дали таблица съществува в MySQL

  3. Как да използвам cURL, за да извличам конкретни данни от уебсайт и след това да ги запазя в моята база данни с помощта на php

  4. MySQL CURRENT_TIMESTAMP полета се актуализира при всяка актуализация

  5. Как да промените нивото на изолация на SQL от Python с помощта на MySQLdb?