Как сравнить игнорирование регистра с ключевым словом IN

Как в Cosmos Scope/SQL сравнить страну столбца со списком значений без учета регистра.

SELECT * FROM student WHERE student_name IN ("aLpHa", "BetA", "GamMa")

person pcbabu    schedule 26.04.2019    source источник
comment
Странно, что столбец страны будет иметь имя student_name.   -  person Gordon Linoff    schedule 26.04.2019
comment
Возможный дубликат Как выполнить поиск без учета регистра в Azure База Документов?   -  person David Makogon    schedule 27.04.2019


Ответы (2)


Следующий запрос должен работать в космосдб

select * from json j where LOWER(j.student_name) IN ("alpha", "beta", "gamma")

введите здесь описание изображения

У вас может быть UDF как Что ж,

удф:

function convertLower(str){
    return str .toLowerCase();
}

и использовать его как

SELECT * FROM c where udf.lowerConvert(c.student_name) IN ("alpha", "beta", "gamma")
person Sajeetharan    schedule 27.04.2019
comment
Как упоминалось в другом вопросе (и ответе Аравинда), на который я ссылался как на дубликат, lower() неэффективен, так как в конечном итоге он сканирует весь раздел (или всю коллекцию, если вы включите запрос между разделами), поскольку он полностью обходит любую индексацию. - person David Makogon; 27.04.2019
comment
Документы также показывают, что это должно работать. Это даже не работает в iScope. Какие инструменты вы используете? Извините, если глупо. Я новичок в среде Космос. - person pcbabu; 29.04.2019

Вы можете использовать lower():

SELECT * FROM student WHERE lower(student_name) IN ("alpha", "beta", "gamma")

Или, как вариант, пользователь upper() соответственно.

person Nir Alfasi    schedule 26.04.2019
comment
У вас есть идеи, как я могу сделать то же самое в Cosmos DB? - person pcbabu; 26.04.2019
comment
@pcbabu Я не знаком с этим, но если это не сработает, вы также можете попробовать использовать ilike для сравнения (это то же самое, что и like, только без учета регистра): SELECT * FROM student WHERE student_name ilike "alpha" - person Nir Alfasi; 27.04.2019
comment
Кроме того, в соответствии с этим вы можете использовать lower() - person Nir Alfasi; 27.04.2019
comment
FYI lower() приводит к сканированию раздела (или коллекции), поскольку он не может использовать индексы для искомых свойств. Подробнее в ответе на вопрос, который я связал как дубликат. - person David Makogon; 27.04.2019