azure-cosmosdb - 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 之间的记录
解决方案
请使用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
输出:
推荐阅读
- android - 对 2 个 RecyclerView 使用相同的 RecyclerViewAdapter
- exception - 在 CUDA 内核中触发运行时错误
- python - Selenium:谁设置了 cookie?
- c++ - 如何在 Qt 中获得与 CSS 规则“显示:内联块”相同的行为?
- android - 在 ListView 中使用相机意图发送位置并在 OnActivtyResult 方法中获取位置
- java - (org.gradle.api.tasks.TaskExecutionException:任务':app:compileDebugJavaWithJavac'的执行失败)同时使用firebase
- javascript - 出现服务器 500 内部错误,但在邮递员中工作正常
- python-3.x - 如何防止编写相同的代码?无法正确编写装饰器。Python
- c# - 在 C# 中抛出 Catch
- c# - 如何将多列分组结果传递给剃刀视图