如何在列上强制使用JSON模式

如何在列上强制使用JSON模式,json,sql-server,sql-server-2017,Json,Sql Server,Sql Server 2017,我有一个NVARCHAR(MAX)列,用于存储json数据。 强制这些数据符合某种json模式的最佳方法是什么 我知道我可以通过一个函数设置一个检查约束来检查我的需求,但是有没有更好的/内置的方法来做到这一点?简短回答:没有。SQL Server支持使用模式存储XML,但不支持JSON。当然,正如您所提到的,您可以自己验证表达式,并且自定义CLR函数可以做任何事情,包括在JSON模式验证中引入支持(如果它真的增加了价值的话)。也就是说,你应该考虑为什么要有一个模式:如果你的数据允许一个固定的结构

我有一个
NVARCHAR(MAX)
列,用于存储json数据。 强制这些数据符合某种json模式的最佳方法是什么


我知道我可以通过一个函数设置一个检查约束来检查我的需求,但是有没有更好的/内置的方法来做到这一点?

简短回答:没有。SQL Server支持使用模式存储XML,但不支持JSON。当然,正如您所提到的,您可以自己验证表达式,并且自定义CLR函数可以做任何事情,包括在JSON模式验证中引入支持(如果它真的增加了价值的话)。也就是说,你应该考虑为什么要有一个模式:如果你的数据允许一个固定的结构,考虑使用一个表来代替,SQL Server有很好的支持。另一方面,如果您希望对JSON作为主要数据提供更可靠的支持,则可以选择NoSQL。@Jeroenmoster JSON非常灵活,即使它确实根据架构进行验证。json模式中允许所有类型的条件,例如
anyof
oneof
甚至
if…else
,这可能很难转换为关系模式。话虽如此,我同意-Sql Server在充分支持json方面还有一些工作要做-模式验证可能不是他们的首要任务。对于任何在这个问题上遇到障碍的人,这里有一些关于Sql Server中存在哪些内置json支持的更多信息。不是一种数据类型,但仍然是有用的函数。