Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exemplos ISJSON() no SQL Server (T-SQL)


Ao usar o SQL Server, você pode usar o ISJSON() 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, ISJSON() retorna 1 , caso contrário, ele retornará 0 .


Sintaxe


A sintaxe fica assim:
ISJSON ( expression )

Onde expression é a expressão de string para a 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 ISJSON('{"Name": "Bob"}') 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 ISJSON('Name: Bob') AS Result;

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

Exemplo 3 – Uma declaração condicional


Aqui está uma instrução condicional básica que gera um resultado diferente, dependendo se a string contém JSON ou não.
DECLARE @data nvarchar(255);
SET @data = '{"Name": "Bob"}';
IF (ISJSON(@data) > 0)
    SELECT 'Valid JSON' AS 'Result';
ELSE
    SELECT 'Invalid JSON' AS 'Result';

Resultado:
+------------+
| Result     |
|------------|
| Valid JSON |
+------------+

Exemplo 4 – 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 nvarchar(4000) para armazenar o documento JSON.
SELECT Contents
FROM Collections
WHERE ISJSON(Contents) > 0;

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"
            }
        ]
    }
]            |
+------------+