Trang này giải thích cú pháp mà bạn phải sử dụng để lọc tài khoản.
Cú pháp
Bạn phải đặt tất cả các giá trị không phải số nguyên trong dấu ngoặc kép ("). Người nhận để tìm hiểu xem một trường cụ thể chấp nhận những giá trị nào, hãy xem tài liệu tham khảo cho trường đó.
Bạn có thể sử dụng AND
để lọc nhiều trường trong cùng một truy vấn. Bạn cũng có thể
sử dụng AND
để kết hợp nhiều bộ lọc relationship(...)
và service(...)
.
Sau đây là ví dụ về việc kết hợp nhiều relationship(...)
và service(...)
bộ lọc:
(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))
Ví dụ này trả về các tài khoản sau:
Tất cả tài khoản có mối quan hệ quản lý tài khoản với một tài khoản khác, và một mối quan hệ bổ sung đang chờ chấp nhận.
Tất cả tài khoản có tên hiển thị là
"store"
và có mối quan hệ với các tài khoản khác.
Bạn không thể sử dụng AND
để lọc nhiều giá trị trong cùng một trường. Cho
ví dụ: bạn không thể sử dụng accountName = "*A*" AND accountName = "*B*"
.
Bạn có thể sử dụng OR
để lọc hai trường trong cùng một truy vấn. Đóng bộ lọc
tiêu chí ở mỗi bên của toán tử OR
có dấu ngoặc đơn. Ví dụ: (accountName = "storeA") OR (accountName = "storeB")
Bạn chỉ có thể sử dụng OR
để kết hợp 2 trường. Ví dụ: bạn không thể sử dụng
(accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
.
Không được dùng dấu ngoặc đơn trừ khi dùng toán tử AND
và OR
, và trong
các lệnh gọi hàm, như relationship(...)
và service(...)
.
Đối với các trường chuỗi như accountName
và accountIdAlias
, bạn có thể lọc cho
các giá trị có chứa một từ hoặc chuỗi ký tự nhất định bằng cách đặt ký tự
trình tự trong dấu hoa thị (*
). Ví dụ: accountName = "*foo*"
trả về tất cả
các tài khoản có accountName
chứa foo
, chẳng hạn như "storeFoo".
Bạn có thể lọc các giá trị không chứa một trình tự nhất định bằng cách sử dụng !=
và *
. Ví dụ: accountName != "*foo*"
trả về tất cả tài khoản có
accountName
không chứa foo
.
Khoảng trắng thừa sẽ bị bỏ qua. Ví dụ: foo AND bar
giống với foo
AND bar
.
Thông số kỹ thuật
Các bộ lọc tuân theo một tập con của bộ lọc AIP và EBNF chính thức ngữ pháp:
filter
: accountFilterDisj
| accountFilterConj
;
accountFilterDisj
: "(" accountFilterConj " OR " accountFilterConj ")"
;
accountFilterConj
: accountFilter {" AND " accountFilter}
;
accountFilter
: displayNameFilter | relationshipFn
;
displayNameFilter
: "displayName" comparator value
;
relationshipFn
: "relationship(" relationshipConj ")"
;
relationshipConj
: relationshipFilter {" AND " relationshipFilter}
;
relationshipFilter
: "providerId = " numValue
| "callerHasAccessToProviderFilter()"
| "externalAccountId" comparator value
| "accountIdAlias" comparator value
| serviceFn
;
serviceFn
: "service(" serviceConj ")"
;
serviceConj
: serviceFilter {" AND " serviceFilter}
;
serviceFilter
: handshakeStateFilter
| typeFilter
;
handshakeStateFilter
: "handshakeState = " value
;
typeFilter
: "type = " value
;
comparator
: " = " | " != "
;