ISJSON (Transact-SQL)
适用于:SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Microsoft Fabric 中的 SQL 分析终结点 Microsoft Fabric 中的仓库
测试字符串是否包含有效 JSON。
语法
ISJSON ( expression [, json_type_constraint] )
参数
expression
要测试的字符串。
json_type_constraint
指定要签入输入的 JSON 类型。 有效值为 VALUE
、ARRAY
、OBJECT
或 SCALAR
。 在 SQL Server 2022 (16.x) 中引入。
注意
Azure Synapse Analytics 专用池不支持参数 json_type_constraint
返回值
如果字符串包含有效 JSON,则返回 1
;否则,返回 0
。 如果 expression 为 NULL,则返回 NULL
。
如果语句省略 json_type_constraint,函数将测试输入是否为有效的 JSON 对象或数组,如果是,则返回 1
;否则返回 0
。
如果指定了 json_type_constraint ,该函数将检查 JSON 类型,如下所示:
值 | 说明 |
---|---|
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。
不返回错误。
注解
ISJSON
不检查在相同级别的键的唯一性。
示例
示例 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
在顶级包含有效 JSON SCALAR 值的行。
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,因为输入是符合 RFC 8259 的有效 JSON 标量。
SELECT ISJSON('"test string"', SCALAR)