SQL Server使用OPENJSON读取JSON提取AEDAT最大值为整数的方法
解决方案
你直接查询OPENJSON返回的value列对应数组中的完整JSON对象,因此得到的是整串{"AEDAT":"20211112"},没有提取出单独的AEDAT字段。你可以通过WITH子句显式指定JSON解析结构实现需求:
方法1:提取字段后再做类型转换
如果你不确定所有AEDAT值都是合法数字,可以先按字符串提取再转换:
SELECT MAX(CAST(AEDAT AS INT)) AS MaxAEDAT FROM OPENJSON(@json, '$.value') WITH ( AEDAT VARCHAR(8) '$.AEDAT' )
方法2:解析时直接指定字段类型
如果确认所有AEDAT值都是合法的8位数字,可以在解析时直接指定类型为INT,简化写法:
SELECT MAX(AEDAT) AS MaxAEDAT FROM OPENJSON(@json, '$.value') WITH ( AEDAT INT '$.AEDAT' )
两种写法返回的结果都是整数类型的20211112。
内容的提问来源于stack exchange,提问作者pythondumb
相关产品推荐
相关产品推荐

