Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL và JSON - chuyển mảng thành hàng

Dưới đây là ba cách để chuyển mảng của bạn thành hàng. Sử dụng cùng một giá trị JSON giả định:

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

Sử dụng bảng số nội dòng. Tương thích MySQL và 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;

Sử dụng MySQL 8.0.4+ JSON_TABLE ():

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

Sử dụng Công cụ MariaDB SEQUENCE để loại bỏ bảng trình tự nội dòng:

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

Để làm cho tổng thể hơn trong MariaDB, hãy sử dụng giá trị tối đa "dự đoán tốt nhất" cho độ dài mảng, sau đó giới hạn trình tự ở độ dài JSON. Ví dụ này giả sử mảng lớn nhất sẽ có 1024 phần tử trở xuống:

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. Đang cố gắng thực hiện thao tác MINUS trong MySQL

  2. Mục đích của character_set_connection là gì?

  3. Hiệu suất CSV so với MySQL

  4. MySQL:ERROR 1022 (23000):Không thể ghi; khóa trùng lặp trong bảng '# sql-2b8_2'

  5. Hiểu các Tuyên bố Chuẩn bị sẵn và các Tham số Ràng buộc của PDO