Azure Cosmos DB - фильтр диапазона SQL API в состоянии WHERE - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь отфильтровать данные по диапазону «количество» в условии запроса 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

1 Ответ

0 голосов
/ 14 июня 2019

Пожалуйста, используйте 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

Выход:

enter image description here

...