适用于:sql Server 2016 (13.x) 及更高版本
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics SQL Analytics
SQL 分析终结点 Microsoft,Microsoft
Fabric SQL 数据库中Microsoft Fabric 预览版中的 Microsoft Fabric SQL 数据库
语法 ISJSON
测试字符串是否包含有效的 JSON。
Syntax
ISJSON ( expression [, json_type_constraint] )
Arguments
expression
要测试的字符串。
json_type_constraint
指定要签入输入的 JSON 类型。 有效值为 VALUE
、ARRAY
、OBJECT
或 SCALAR
。 在 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)