Azure CosmosDB에서 LIKE 쿼리를 작성하는 방법
다음 쿼리를 사용하여 Cosmos DB에서 데이터를 가져오고 싶습니다.
SELECT * FROM c WHERE c.pi like '09%001'
(이것은 MySQL에서 사용할 수 있는 SQL 쿼리입니다.)
여기서,pi
문자열 값입니다.이 값은 다음과 같습니다.09001001
또는09025001
.
를 사용할 수 있는 방법이 있습니까?LIKE
명령어를 사용할 수 있습니까?
cosmos DB가 사용하는 것은 알고 있습니다.CONTAINS
단, 스트링의 선두 또는 말미와 특정하게 일치시키는 경우에는 사용할 수 없습니다.
갱신:
이제 LIKE 키워드를 사용하여 Azure Cosmos DB SQL(코어) API에서 텍스트 검색을 수행할 수 있습니다!
예:
SELECT *
FROM c
WHERE c.description LIKE "%cereal%"
오래된 답변:
이는 두 가지 방법으로 달성할 수 있습니다.
(i) 현재 LIKE에 상당하는, , 및 빌트인 기능을 지원하고 있다.
Cosmosdb의 LIKE 키워드는 Contains 입니다.
SELECT * FROM c WHERE CONTAINS(c.pi, '09')
그래서 당신의 경우 패턴과 일치하고 싶다면09%001
, 다음을 사용해야 합니다.
SELECT * FROM c WHERE STARTSWITH(c.pi, '09') AND ENDSWITH(c.pi, '001')
(ii) 404에서 설명한 바와 같이 regex를 지원하는 SQL API 사용자 정의 함수를 사용합니다.
function executeRegex(str, pattern) {
let regex=RegExp(pattern);
return regex.test(str);
}
SELECT udf.EXECUTE_REGEX("foobar", ".*bar")
또 다른 방법은 사용자 정의 함수를 직접 만드는 것입니다.예를 들어 regex 체크는 다음과 같습니다.
function matchRegex(str, pattern) {
let regex=RegExp(pattern);
return regex.test(str);
}
이름으로 작성되었습니다.MATCH_REGEX
그 후 다음과 같이 사용할 수 있습니다.
SELECT udf.MATCH_REGEX("09001001", "^09.*001$")
주의: 예를 들어, 인덱스 최적화는 모두 중지됩니다.STARTSWITH
그랬을 거야훨씬 더 복잡한 패턴을 만들 수 있습니다.따라서 인덱스를 사용하여 검색을 좁힐 수 있는 추가 필터를 사용하는 것이 유리할 수 있다.StartsWith(c.property1, '09')
위의 예에 덧붙여WHERE
절을 클릭합니다.
갱신:
코스모스는 이제 같은 일을 할 수 있는 것을 가지고 있다.MongoApi 문서에서는 특정 규칙에 준거하면 인덱스를 사용하여 쿼리를 최적화할 수 있다고 기술되어 있습니다만, (현시점에서는) SqlApi에 해당되지 않는 것 같습니다.
언급URL : https://stackoverflow.com/questions/50577461/how-to-write-a-like-query-in-azure-cosmosdb
'source' 카테고리의 다른 글
색 그라데이션이 있는 UIView를 프로그래밍 방식으로 만듭니다. (0) | 2023.04.22 |
---|---|
뷰 모델에서 WPF의 TextBox에 포커스 설정 (0) | 2023.04.22 |
다른 사용자로 PowerShell 실행 및 스크립트 실행 (0) | 2023.04.22 |
Windows에서 Git에 CR+LF 대신 LF를 사용하도록 강제하는 방법은 무엇입니까? (0) | 2023.04.22 |
Swift에서 pull을 사용하여 새로 고치는 방법 (0) | 2023.04.22 |