首页 > 解决方案 > Azure Cosmos DB - WHERE 条件下的 SQL API 范围筛选器

问题描述

我正在尝试根据 SQL API 查询 WHERE 条件中的“金额”范围过滤数据。金额值可以是不带双引号的整数值或带双引号的十进制值。基本上我需要过滤两个金额范围值之间的所有记录

以下是我的示例数据。

[
    {
        "customer": "001",
        "dt": {
            "Transaction": [
                {
                    "Amount": "999.00",
                    "timestamp": "2019-01-28T15:44:49.215"
                }
            ]
        }
    },
    {
        "customer": "002",
        "dt": {
            "Transaction": [
                {
                    "Amount": "9999.00",
                    "timestamp": "2019-01-28T15:44:49.215"
                }
            ]
        }
    },
    {
        "customer": "003",
        "dt": {
            "Transaction": [
                {
                    "Amount": 9,
                    "timestamp": "2019-01-28T15:44:49.215"
                }
            ]
        }
    }
]

下面是我试图运行以查找数量在 99 到 10000 之间的记录的查询

SELECT c.dt[0].Transaction[0].Amount FROM c where c.dt[0].Transaction[0].Amount>"99" 
and  c.dt[0].Transaction[0].Amount<"10000" 

但它没有返回任何记录

你能帮我查询一下吗?我需要过滤数量在 99 到 10000 之间的记录

标签: azure-cosmosdbazure-cosmosdb-sqlapi

解决方案


请使用UDF

udf:

function test(str){
   if(typeof(str)=='string'){
       return Number(str)
   }else{
       return str
   }
}

sql:

SELECT c.dt.Transaction[0].Amount FROM c where udf.test(c.dt.Transaction[0].Amount) >99
and  udf.test(c.dt.Transaction[0].Amount)<10000

输出:

在此处输入图像描述


推荐阅读