1# @ohos.data.dataSharePredicates (数据共享谓词)
2
3**谓词(DataSharePredicates)** 是开发者通过DataShare查询数据库中的数据所使用的筛选条件,经常被应用在更新数据、删除数据和查询数据中。
4
5谓词的接口函数与数据库的筛选条件一一对应,开发者在使用前需了解数据库相关知识。
6
7> **说明:**
8>
9> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
10>
11> - 本模块接口仅可在Stage模型下使用。
12
13
14
15## 导入模块
16
17```ts
18import { dataSharePredicates } from '@kit.ArkData';
19```
20
21## DataSharePredicates
22提供用于不同实现不同查询方法的数据共享谓词。该类型不是多线程安全的,如果应用中存在多线程同时操作该类派生出的实例,注意加锁保护。
23
24### equalTo<sup>10+</sup>
25
26equalTo(field: string, value: ValueType): DataSharePredicates
27
28该接口用于配置谓词以匹配值等于指定值的字段。
29
30目前仅RDB及KVDB(schema)支持该谓词。
31
32**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
33
34**参数:**
35
36| 参数名 | 类型                                                | 必填 | 说明                   |
37| ------ | --------------------------------------------------- | ---- | ---------------------- |
38| field  | string                                              | 是   | 数据库表中的列名。     |
39| value  | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是   | 指示要与谓词匹配的值。 |
40
41**返回值:**
42
43| 类型                                        | 说明                       |
44| ------------------------------------------- | -------------------------- |
45| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 |
46
47**示例:**
48
49```ts
50let predicates = new dataSharePredicates.DataSharePredicates()
51predicates.equalTo("NAME", "Rose")
52```
53
54
55### and<sup>10+</sup>
56
57and(): DataSharePredicates
58
59该接口用于将和条件添加到谓词中。
60
61目前仅RDB及KVDB(schema)支持该谓词。
62
63**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
64
65**返回值:**
66
67| 类型                                        | 说明                   |
68| ------------------------------------------- | ---------------------- |
69| [DataSharePredicates](#datasharepredicates) | 返回带有和条件的谓词。 |
70
71**示例:**
72
73```ts
74let predicates = new dataSharePredicates.DataSharePredicates()
75predicates.equalTo("NAME", "lisi")
76    .and()
77    .equalTo("SALARY", 200.5)
78```
79
80### orderByAsc<sup>10+</sup>
81
82orderByAsc(field: string): DataSharePredicates
83
84该接口用于配置谓词以匹配其值按升序排序的列。
85
86目前仅RDB及KVDB(schema)支持该谓词。
87
88**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
89
90**参数:**
91
92| 参数名 | 类型   | 必填 | 说明               |
93| ------ | ------ | ---- | ------------------ |
94| field  | string | 是   | 数据库表中的列名。 |
95
96**返回值:**
97
98| 类型                                        | 说明                       |
99| ------------------------------------------- | -------------------------- |
100| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 |
101
102**示例:**
103
104```ts
105let predicates = new dataSharePredicates.DataSharePredicates()
106predicates.orderByAsc("AGE")
107```
108
109### orderByDesc<sup>10+</sup>
110
111orderByDesc(field: string): DataSharePredicates
112
113该接口用于配置谓词以匹配其值按降序排序的列。
114
115目前仅RDB及KVDB(schema)支持该谓词。
116
117**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
118
119**参数:**
120
121| 参数名 | 类型   | 必填 | 说明               |
122| ------ | ------ | ---- | ------------------ |
123| field  | string | 是   | 数据库表中的列名。 |
124
125**返回值:**
126
127| 类型                                        | 说明                       |
128| ------------------------------------------- | -------------------------- |
129| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 |
130
131**示例:**
132
133```ts
134let predicates = new dataSharePredicates.DataSharePredicates()
135predicates.orderByDesc("AGE")
136```
137
138### limit<sup>10+</sup>
139
140limit(total: number, offset: number): DataSharePredicates
141
142该接口用于配置谓词以指定结果数和起始位置。
143
144目前仅RDB及KVDB(schema)支持该谓词。
145
146**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
147
148**参数:**
149
150| 参数名   | 类型   | 必填 | 说明           |
151| -------- | ------ | ---- | -------------- |
152| total    | number | 是   | 指定结果数。   |
153| offset | number | 是   | 指示起始位置。 |
154
155**返回值:**
156
157| 类型                                        | 说明                       |
158| ------------------------------------------- | -------------------------- |
159| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 |
160
161**示例:**
162
163```ts
164let predicates = new dataSharePredicates.DataSharePredicates()
165predicates.equalTo("NAME", "Rose").limit(10, 3)
166```
167
168### in<sup>10+</sup>
169
170in(field: string, value: Array&lt;ValueType&gt;): DataSharePredicates
171
172该接口用于配置谓词以匹配值在指范围内的字段。
173
174目前仅RDB及KVDB(schema)支持该谓词。
175
176**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
177
178**参数:**
179
180| 参数名  | 类型             | 必填 | 说明                                    |
181| ------- | ---------------- | ---- | --------------------------------------- |
182| field   | string           | 是 | 数据库表中的列名。                      |
183| value | Array&lt;[ValueType](js-apis-data-valuesBucket.md#valuetype)&gt; | 是   | 以ValueType型数组形式指定的要匹配的值。 |
184
185**返回值:**
186
187| 类型                                        | 说明                       |
188| ------------------------------------------- | -------------------------- |
189| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 |
190
191**示例:**
192
193```ts
194let predicates = new dataSharePredicates.DataSharePredicates()
195predicates.in("AGE", [18, 20])
196```