ISJSON (Transact-SQL)

适用于:sql Server 2016 (13.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics SQL AnalyticsSQL 分析终结点 Microsoft,MicrosoftFabric SQL 数据库中Microsoft Fabric 预览版中的 Microsoft Fabric SQL 数据库

语法 ISJSON 测试字符串是否包含有效的 JSON。

Transact-SQL 语法约定

Syntax

ISJSON ( expression [, json_type_constraint] )  

Arguments

expression

要测试的字符串。

json_type_constraint

指定要签入输入的 JSON 类型。 有效值为 VALUEARRAYOBJECTSCALAR。 在 SQL Server 2022 (16.x) 中引入。

Note

Azure Synapse Analytics 专用池不支持参数json_type_constraint

Return value

如果字符串包含有效 JSON,则返回 1;否则,返回 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 标量 - 数字或字符串

json_type_constraint值 SCALAR 可用于测试 IETF RFC 8259 符合 JSON 文档,该文档仅包含顶级 JSON 标量值。 不包含顶级 JSON 标量值的 JSON 文档符合 IETF RFC 4627。

不返回错误。

Remarks

ISJSON 不检查在相同级别的键的唯一性。

Examples

Example 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

Example 2

下面的示例将返回其列 json_col 包含有效 JSON 的行。

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

Example 3

下面的示例将返回其列 json_col 在顶级包含有效 JSON SCALAR 值的行。

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

Example 4

下面的示例返回 1,因为输入是有效的 JSON 值 - true

SELECT ISJSON('true', VALUE)

Example 5

下面的示例返回 0,因为输入是无效的 JSON 值。

SELECT ISJSON('test string', VALUE)

Example 6

以下示例返回 1,因为输入是符合 RFC 8259 的有效 JSON 标量。

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