SQL Server中OPENJSON返回type列的枚举值及对应含义咨询
好问题!我来帮你理清楚SQL Server中OPENJSON函数返回的type列的枚举值和对应含义,这确实是日常使用中容易忽略但很实用的细节。
OPENJSON
type列的枚举值与含义 OPENJSON返回的type列是tinyint类型,用来标记对应value的JSON原生数据类型,具体的枚举值和对应含义如下:
- 0: 空值(
null)—— 对应JSON里的null值 - 1: 字符串(
string)—— 比如你示例中name字段的"John"就属于这类 - 2: 数字(
number)—— 像示例里的age:30,还有price数组里的1100、999这类数值都对应这个类型 - 3: 对象(
object)—— 比如cars数组里每个包含make、models的子JSON对象 - 4: 数组(
array)—— 示例中的cars本身,以及每个汽车对象里的models、price数组都属于这类 - 5: 布尔值(
boolean)—— 对应JSON里的true或false(你的示例里没有这类数据,但如果存在的话会返回这个值)
结合你的示例理解
拿你给出的JSON和查询来说:
name行的type值是1(字符串)age行的type值是2(数字)cars行的type值是4(数组)- 当你深入解析
cars数组里的子对象时,每个子对象的type值是3(对象)
另外,你还可以利用type列做筛选,比如只想查询所有字符串类型的键值对,可以这么写:
select * from openjson(@json,'$') where type = 1
内容的提问来源于stack exchange,提问作者AAsk
相关产品推荐
相关产品推荐

