DocumentDB SQL - Giữa từ khóa

Từ khóa BETWEEN được sử dụng để diễn đạt các truy vấn đối với các phạm vi giá trị như trong SQL. BETWEEN có thể được sử dụng đối với chuỗi hoặc số. Sự khác biệt chính giữa việc sử dụng BETWEEN trong DocumentDB và ANSI SQL là bạn có thể thể hiện các truy vấn phạm vi dựa trên các thuộc tính của các kiểu hỗn hợp.

Ví dụ: trong một số tài liệu, có thể bạn có "điểm" là một số và trong các tài liệu khác, nó có thể là chuỗi. Trong những trường hợp này, so sánh giữa hai loại kết quả khác nhau là "không xác định", và tài liệu sẽ bị bỏ qua.

Chúng ta hãy xem xét ba tài liệu từ ví dụ trước. Sau đây làAndersenFamily tài liệu.

{ 
   "id": "AndersenFamily", 
   "lastName": "Andersen", 
	
   "parents": [ 
      { "firstName": "Thomas", "relationship":  "father" }, 
      { "firstName": "Mary Kay", "relationship":  "mother" } 
   ],
	
   "children": [ 
      { 
         "firstName": "Henriette Thaulow", 
         "gender": "female", 
         "grade": 5, 
         "pets": [ { "givenName": "Fluffy", "type":  "Rabbit" } ] 
      } 
   ],
	
   "location": { "state": "WA", "county": "King", "city": "Seattle" }, 
   "isRegistered": true 
}

Sau đây là SmithFamily tài liệu.

{ 
   "id": "SmithFamily", 
	
   "parents": [ 
      { "familyName": "Smith", "givenName": "James" }, 
      { "familyName": "Curtis", "givenName": "Helen" }
   ],
	
   "children": [ 
      { 
         "givenName": "Michelle", 
         "gender": "female", 
         "grade": 1 
      }, 
		
      { 
         "givenName": "John", 
         "gender": "male", 
         "grade": 7,
			
         "pets": [ 
            { "givenName": "Tweetie", "type": "Bird" } 
         ] 
      } 
   ],
	
   "location": { 
      "state": "NY", 
      "county": "Queens", 
      "city": "Forest Hills" 
   }, 
	
   "isRegistered": true 
}

Sau đây là WakefieldFamily tài liệu.

{ 
   "id": "WakefieldFamily", 
	
   "parents": [ 
      { "familyName": "Wakefield", "givenName": "Robin" }, 
      { "familyName": "Miller", "givenName": "Ben" } 
   ],
	
   "children": [ 
      { 
         "familyName": "Merriam", 
         "givenName": "Jesse", 
         "gender": "female", 
         "grade": 6,
			
         "pets": [ 
            { "givenName": "Charlie Brown", "type": "Dog" }, 
            { "givenName": "Tiger", "type": "Cat" }, 
            { "givenName": "Princess", "type": "Cat" } 
         ] 
      },
		
      { 
         "familyName": "Miller", 
         "givenName": "Lisa", 
         "gender": "female", 
         "grade": 3, 
			
         "pets": [ 
            { "givenName": "Jake", "type": "Snake" } 
         ] 
      } 
   ],
	
   "location": { "state": "NY", "county": "Manhattan", "city": "NY" }, 
   "isRegistered": false 
}

Hãy xem xét một ví dụ, trong đó truy vấn trả về tất cả các tài liệu gia đình trong đó lớp của đứa trẻ đầu tiên nằm trong khoảng từ 1-5 (cả hai).

Sau đây là truy vấn trong đó từ khóa BETWEEN được sử dụng và sau đó là toán tử logic AND.

SELECT * 
FROM Families.children[0] c 
WHERE c.grade BETWEEN 1 AND 5

Khi truy vấn trên được thực thi, nó tạo ra kết quả sau.

[ 
   { 
      "givenName": "Michelle", 
      "gender": "female", 
      "grade": 1 
   }, 
	
   { 
      "firstName": "Henriette Thaulow", 
      "gender": "female", 
      "grade": 5, 
		
      "pets": [ 
         { 
            "givenName": "Fluffy",
            "type": "Rabbit" 
         } 
      ] 
   } 
]

Để hiển thị các điểm bên ngoài phạm vi của ví dụ trước, hãy sử dụng KHÔNG GIỮA như được hiển thị trong truy vấn sau.

SELECT * 
FROM Families.children[0] c 
WHERE c.grade NOT BETWEEN 1 AND 5

Khi truy vấn này được thực thi. Nó tạo ra kết quả sau.

[ 
   { 
      "familyName": "Merriam", 
      "givenName": "Jesse", 
      "gender": "female", 
      "grade": 6, 
		
      "pets": [ 
         { 
            "givenName": "Charlie Brown", 
            "type": "Dog" 
         }, 
			
         { 
            "givenName": "Tiger", 
            "type": "Cat" 
         },
			
         {
            "givenName": "Princess", 
            "type": "Cat" 
         } 
      ] 
   }
]