sql >> Base de Datos >  >> RDS >> Mysql

JSON_VALID() – Prueba de JSON válido en MySQL

Al usar MySQL, puede usar JSON_VALID() función para probar si una expresión de cadena contiene JSON válido o no.

Si la expresión contiene JSON válido, JSON_VALID() devuelve 1 , de lo contrario devuelve 0 .

Sintaxis

La sintaxis es así:

JSON_VALID(val)

Donde val es el valor para el que está probando JSON válido.

Ejemplo 1:JSON válido

Aquí hay un ejemplo para demostrar lo que sucede cuando la cadena contiene JSON válido.

SELECT JSON_VALID('{"Name": "Bart"}') AS Result;

Resultado:

+--------+
| Result |
+--------+
|      1 |
+--------+

Ejemplo 2:JSON no válido

Aquí hay un ejemplo para demostrar lo que sucede cuando la cadena no contener JSON válido.

SELECT JSON_VALID('Name: Bart') AS Result;

Resultado:

+--------+
| Result |
+--------+
|      0 |
+--------+

Ejemplo 3:un ejemplo de base de datos

En esta consulta de base de datos, los resultados solo se devuelven donde Collections.Contents columna contiene JSON válido.

Esta columna en particular usa un tipo de datos de json para almacenar el documento JSON.

SELECT Contents
FROM Collections
WHERE JSON_VALID(Contents) = 1;

Resultado:

+------------+
| Contents   |
|------------|
| [
    {
        "ArtistName": "AC/DC",
        "Albums": [
            {
                "AlbumName": "Powerage"
            }
        ]
    },
    {
        "ArtistName": "Devin Townsend",
        "Albums": [
            {
                "AlbumName": "Ziltoid the Omniscient"
            },
            {
                "AlbumName": "Casualties of Cool"
            },
            {
                "AlbumName": "Epicloud"
            }
        ]
    },
    {
        "ArtistName": "Iron Maiden",
        "Albums": [
            {
                "AlbumName": "Powerslave"
            },
            {
                "AlbumName": "Somewhere in Time"
            },
            {
                "AlbumName": "Piece of Mind"
            },
            {
                "AlbumName": "Killers"
            },
            {
                "AlbumName": "No Prayer for the Dying"
            }
        ]
    }
]            |
+------------+

Esto es lo que sucede si cambiamos la instrucción para devolver los datos solo si isn't JSON válido.

SELECT Contents
FROM Collections
WHERE JSON_VALID(Contents) = 0;

Resultado:

Empty set (0.00 sec)