Поделиться через


ISJSON (Transact-SQL)

Применимо к: SQL Server 2016 (13.x) и более поздние версии:конечная точка аналитики SQL AzureSynapse Analytics в хранилище MicrosoftFabric в базе данных SQL Microsoft Fabric в Microsoft Fabric

Синтаксис ISJSON проверяет, содержит ли строка допустимый JSON.

Соглашения о синтаксисе Transact-SQL

Syntax

ISJSON ( expression [, json_type_constraint] )  

Arguments

expression

Строка для проверки.

json_type_constraint

Указывает тип JSON для возврата входных данных. Допустимые значения: VALUE, ARRAYили OBJECTSCALAR. Впервые представлено в SQL Server 2022 (16.x).

Note

Аргумент json_type_constraint не поддерживается в выделенных пулах Azure Synapse Analytics

Возвращаемое значение

Возвращает значение 1 , если строка содержит допустимый JSON; в противном случае возвращается 0. Возвращает значение NULL , если выражение равно NULL.

Если инструкция не json_type_constraint, функция проверяет, является ли вход допустимый объект JSON или массив и возвращается 1 в противном случае, возвращается 0.

Если указана json_type_constraint , функция проверяет тип JSON следующим образом:

Value Description
VALUE Проверяет на наличие допустимого значения JSON. Это может быть объект JSON, массив, число, строка или одно из трех литеральных значений (false, true, null).
ARRAY Проверяет на наличие допустимого массива JSON
OBJECT Проверяет на наличие допустимого объекта JSON
SCALAR Тесты на наличие допустимого скаляра JSON — число или строка

Значение SCALAR json_type_constraint можно использовать для тестирования для документа IETF RFC 8259, соответствующего JSON, который содержит только скалярное значение JSON на верхнем уровне. Документ JSON, не содержащий скалярное значение JSON на верхнем уровне, соответствует IETF RFC 4627.

Не возвращает ошибок.

Remarks

ISJSON не проверяет уникальность ключей на том же уровне.

Examples

Пример 1

В следующем примере выполняется условный блок операторов, если значение параметра @param содержит допустимый код JSON.

DECLARE @param <data type>
SET @param = <value>

IF (ISJSON(@param) > 0)  
BEGIN  
     -- Do something with the valid JSON value of @param.  
END

Пример 2

В следующем примере возвращаются строки, в которых столбец json_col содержит допустимые данные JSON.

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col) = 1 

Пример 3

В следующем примере возвращаются строки, в которых столбец json_col содержит допустимое значение SCALAR JSON на высшем уровне.

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col, SCALAR) = 1 

Пример 4

В следующем примере возвращается значение 1, так как входные данные являются допустимым значением JSON — true.

SELECT ISJSON('true', VALUE)

Пример 5

В следующем примере возвращается значение 0, так как входные данные являются недопустимым значением JSON.

SELECT ISJSON('test string', VALUE)

Пример 6

В следующем примере возвращается значение 1, так как входные данные являются допустимым скаляром JSON согласно RFC 8259.

SELECT ISJSON('"test string"', SCALAR)