Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

JSON_VALID() – Teste para JSON válido no MySQL


Ao usar o MySQL, você pode usar o JSON_VALID() função para testar se uma expressão de string contém ou não um JSON válido.

Se a expressão contiver JSON válido, JSON_VALID() retorna 1 , caso contrário, ele retornará 0 .


Sintaxe


A sintaxe fica assim:
JSON_VALID(val)

Onde val é o valor para o qual você está testando um JSON válido.

Exemplo 1 – JSON válido


Aqui está um exemplo para demonstrar o que acontece quando a string contém um JSON válido.
SELECT JSON_VALID('{"Name": "Bart"}') AS Result;

Resultado:
+--------+
| Result |
+--------+
|      1 |
+--------+

Exemplo 2 – JSON inválido


Aqui está um exemplo para demonstrar o que acontece quando a string não contêm JSON válido.
SELECT JSON_VALID('Name: Bart') AS Result;

Resultado:
+--------+
| Result |
+--------+
|      0 |
+--------+

Exemplo 3 – Um exemplo de banco de dados


Nesta consulta de banco de dados, os resultados são retornados apenas onde o Collections.Contents coluna contém JSON válido.

Esta coluna em particular usa um tipo de dados de json para armazenar o 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"
            }
        ]
    }
]            |
+------------+

Veja o que acontece se alterarmos a instrução para retornar os dados somente se isn't JSON válido.
SELECT Contents
FROM Collections
WHERE JSON_VALID(Contents) = 0;

Resultado:
Empty set (0.00 sec)