Document DB SQL Api无法查询值为整数的'value'JSON属性
在Document DB SQL API中查询名为
value且值为整数的JSON属性 我来帮你搞定这个查询问题!从你给出的示例数据来看,value字段在不同的子属性里类型不一样——比如measurementTime.value是字符串,而systolic.value是整数,这也是你查询时可能遇到障碍的原因。下面给你几个实用的解决方案:
1. 查询包含任意整数类型value的文档
如果你想找出所有至少有一个子属性的value是整数的文档,可以用遍历+类型判断的方式:
SELECT * FROM c JOIN r IN c.records JOIN prop IN r WHERE IS_NUMBER(prop.value) AND NOT IS_STRING(prop.value)
语句解释:
JOIN r IN c.records:遍历每个文档里的records数组元素JOIN prop IN r:遍历每个records元素下的所有子属性(比如measurementTime、systolic)IS_NUMBER(prop.value):判断value是否为数字类型NOT IS_STRING(prop.value):排除那些看起来像数字的字符串(比如"114"),确保只匹配真正的整数/数字类型值
2. 精准查询指定属性的整数value
如果你明确知道要查询的属性(比如systolic或diastolic),可以直接指定属性名,让查询更高效:
SELECT * FROM c JOIN r IN c.records WHERE IS_NUMBER(r.systolic.value) AND r.systolic.value = CAST(r.systolic.value AS INT)
语句解释:
IS_NUMBER(r.systolic.value):先判断值是数字类型r.systolic.value = CAST(r.systolic.value AS INT):进一步验证这个数字是整数(排除浮点数,比如114.5这类值)
补充说明
在Azure Cosmos DB(原Document DB)中,JSON的类型是严格区分的,字符串形式的数字("114")和整数(114)会被视为不同类型,所以一定要用类型判断函数来精准筛选,避免误匹配。
内容的提问来源于stack exchange,提问作者Kailash Ravuri
相关产品推荐
相关产品推荐

