Partilhar via


Tipo de dados JSON (visualização)

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada SQL do Azure

O novo nativo json tipo de dados que armazena documentos JSON em um formato binário nativo.

O tipo json fornece um armazenamento de alta fidelidade de documentos JSON otimizado para fácil consulta e manipulação, e fornece os seguintes benefícios sobre o armazenamento de dados JSON em varchar ou nvarchar:

  • Leituras mais eficientes, pois o documento já está analisado
  • Gravações mais eficientes, pois a consulta pode atualizar valores individuais sem acessar o documento inteiro
  • Armazenamento mais eficiente, otimizado para compactação
  • Nenhuma alteração na compatibilidade com o código existente

O tipo json armazena internamente dados usando codificação UTF-8, Latin1_General_100_BIN2_UTF8. Esse comportamento corresponde à especificação JSON.

Para obter mais informações sobre como consultar dados JSON, consulte dados JSON no SQL Server.

Sintaxe de exemplo

A sintaxe de uso para o tipo de json é semelhante a todos os outros tipos de dados do SQL Server em uma tabela.

column_name JSON [NOT NULL | NULL] [CHECK(constraint_expression)] [DEFAULT(default_expression)]

O tipo json pode ser usado na definição de coluna contida em uma instrução CREATE TABLE, por exemplo:

CREATE TABLE Orders (order_id int, order_details JSON NOT NULL);

As restrições podem ser especificadas como parte da definição de coluna, por exemplo:

CREATE TABLE Orders (order_id int, order_details JSON NOT NULL
   CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1
);

Disponibilidade de recursos

O suporte a JSON foi introduzido pela primeira vez no SQL Server 2016 (13.x), principalmente na forma de funções JSON. O novo tipo de json nativo foi introduzido em 2024, primeiro nas plataformas SQL do Azure.

JSON está disponível em todos os níveis de compatibilidade de banco de dados.

Observação

O do tipo de dados JSON está atualmente em pré-visualização para a Base de Dados SQL do Azure e a Instância Gerida SQL do Azure (configurada com apolítica de atualização Always-up-to-date ).

Suporte de função

Todas as funções JSON suportam o tipo de json sem alterações de código ou diferença de uso necessárias.

Para obter uma lista completa das funções JSON, consulte funções JSON.

Índices

Não há tipos de índice especiais para dados JSON.

O json type não pode ser usado como coluna de chave em uma instrução CREATE INDEX. No entanto, uma coluna json pode ser especificada como uma coluna incluída em uma definição de índice. Além disso, uma coluna json pode aparecer na cláusula WHERE de um índice filtrado.

Conversão

A conversão explícita usando CAST ou CONVERT do tipo json pode ser feita para char, nchar, varchare tipos de nvarchar. Todas as conversões implícitas não são permitidas, semelhante ao comportamento de xml. Da mesma forma, apenas char, nchar, varchare nvarchar podem ser explicitamente convertidos para o tipo json.

O tipo json não pode ser usado com o tipo sql_variant ou atribuído a uma variável ou coluna sql_variant. Essa restrição é semelhante a varchar(max), varbinary(max), nvarchar(max), xmle tipos de dados baseados em CLR.

Você pode converter colunas existentes, como uma coluna varchar(max) para json usando ALTER TABLE. Semelhante ao tipo de dados xml, não é possível converter uma coluna json em qualquer uma das cadeias de caracteres ou tipos binários usando ALTER TABLE.

Para obter mais informações, consulte Conversão de tipo de dados.

Compatibilidade

O json type pode ser usado como um parâmetro ou tipo de retorno em uma função definida pelo usuário, ou o parâmetro de um procedimento armazenado. O tipo json é compatível com gatilhos e visualizações.

Atualmente, o formato nativo da ferramenta bcp contém o json documento como varchar ou nvarchar. Você deve especificar um arquivo de formato para designar uma coluna json tipo de dados.

A criação de tipo de alias usando CREATE TYPE para o tipo json não é permitida. Esse é o mesmo comportamento que tipo de xml.

Usar SELECT ... INTO com o tipo JSON cria uma tabela com o tipo JSON.

Limitações

  • O comportamento de retorna um tipo de json , mas o procedimento armazenado do sistema sp_describe_first_result_set não retorna corretamente o tipo de dados json. Portanto, muitos clientes de acesso a dados e driver verão um varchar ou nvarchar tipo de dados.

    • Atualmente, TDS >= 7.4 (com UTF-8) vê varchar(max) com Latin_General_100_bin2_utf8.
    • Atualmente, o TDS < 7.4 vê nvarchar(max) com agrupamento de banco de dados.
  • Atualmente, a função OPENJSON() não aceita o tipo json, atualmente essa é uma conversão implícita. Converta explicitamente para nvarchar(max) primeiro.