我正在尝试在MS-SQL 2016中创建一列,该列应该是有效的JSON,但不一定是JSON对象或数组。
当我发现ISJSON函数无法按预期工作时,我尝试使用ISJSON函数作为检查约束。该文档没有提及有关标量值或对象的任何内容,因此它应适用于带引号的字符串,因为它是有效的JSON值。我尝试使用单引号,转义引号等,但是没有帮助。
在标量字符串上使用ISJSON:
SELECT ISJSON('"test"') <--- result is 0
奇怪的是,接受了以下内容:
SELECT ISSJON('["test"]') <--- result is 1
因此,当放入数组中时,相同的标量值将被接受为JSON,但不能单独接受。 Microsoft是否不符合JSON标准?
答案 0 :(得分:2)
站点https://jsonformatter.curiousconcept.com表示"test"
不是根据RFC 4627或ECMA-404的有效JSON,而是根据RFC 7159的有效JSON。 JSON规范的最新版本是RFC 8529,它表示:“请注意,某些以前的JSON规范将JSON文本约束为对象或数组。”
SQL Server似乎实现了第一个JSON规范,因为这是SQL Server documentation中提到的。