1# @ohos.data.dataSharePredicates (数据共享谓词)(系统接口) 2 3**谓词(DataSharePredicates)** 是开发者通过DataShare查询数据库中的数据所使用的筛选条件,经常被应用在更新数据([update](js-apis-data-dataShare-sys.md#update))、删除数据([delete](js-apis-data-dataShare-sys.md#delete))和查询数据([query](js-apis-data-dataShare-sys.md#query))中。 4 5谓词的接口函数与数据库的筛选条件一一对应,开发者在使用前需了解数据库相关知识。 6 7> **说明:** 8> 9> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 10> 11> - 本模块接口仅可在Stage模型下使用。 12> 13> - 当前页面仅包含本模块的系统接口,其他公开接口参见[@ohos.data.dataSharePredicates (数据共享谓词)](js-apis-data-dataSharePredicates.md)。 14 15 16 17## 导入模块 18 19```ts 20import { dataSharePredicates } from '@kit.ArkData'; 21``` 22 23## DataSharePredicates 24提供用于不同实现不同查询方法的数据共享谓词。该类型不是多线程安全的,如果应用中存在多线程同时操作该类派生出的实例,注意加锁保护。 25 26### notEqualTo 27 28notEqualTo(field: string, value: ValueType): DataSharePredicates 29 30该接口用于配置谓词以匹配值不等于指定值的字段。 31 32目前仅RDB及KVDB(schema)支持该谓词。 33 34**系统接口:** 此接口为系统接口。 35 36**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 37 38**参数:** 39 40| 参数名 | 类型 | 必填 | 说明 | 41| ------ | --------------------------------------------------- | ---- | ---------------------- | 42| field | string | 是 | 数据库表中的列名。 | 43| value | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是 | 指示要与谓词匹配的值。 | 44 45**返回值:** 46 47| 类型 | 说明 | 48| ------------------------------------------- | -------------------------- | 49| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 50 51**示例:** 52 53```ts 54let predicates = new dataSharePredicates.DataSharePredicates() 55predicates.notEqualTo("NAME", "Rose") 56``` 57 58### beginWrap 59 60beginWrap(): DataSharePredicates 61 62该接口用于向谓词添加左括号,相当于sql语句的“(”,必须和右括号一起使用。 63 64目前仅RDB支持该谓词。 65 66**系统接口:** 此接口为系统接口。 67 68**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 69 70**返回值:** 71 72| 类型 | 说明 | 73| ------------------------------------------- | ---------------------- | 74| [DataSharePredicates](#datasharepredicates) | 返回带有左括号的谓词。 | 75 76**示例:** 77 78```ts 79let predicates = new dataSharePredicates.DataSharePredicates() 80predicates.equalTo("NAME", "lisi") 81 .beginWrap() 82 .equalTo("AGE", 18) 83 .or() 84 .equalTo("SALARY", 200.5) 85 .endWrap() 86``` 87 88### endWrap 89 90endWrap(): DataSharePredicates 91 92该接口用于向谓词添加右括号。 93 94目前仅RDB支持该谓词。 95 96**系统接口:** 此接口为系统接口。 97 98**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 99 100**返回值:** 101 102| 类型 | 说明 | 103| ------------------------------------------- | ---------------------- | 104| [DataSharePredicates](#datasharepredicates) | 返回带有右括号的谓词。 | 105 106**示例:** 107 108```ts 109let predicates = new dataSharePredicates.DataSharePredicates() 110predicates.equalTo("NAME", "lisi") 111 .beginWrap() 112 .equalTo("AGE", 18) 113 .or() 114 .equalTo("SALARY", 200.5) 115 .endWrap() 116``` 117 118### or 119 120or(): DataSharePredicates 121 122该接口用于将或条件添加到谓词中。 123 124目前仅RDB及KVDB(schema)支持该谓词。 125 126**系统接口:** 此接口为系统接口。 127 128**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 129 130**返回值:** 131 132| 类型 | 说明 | 133| ------------------------------------------- | ---------------------- | 134| [DataSharePredicates](#datasharepredicates) | 返回带有或条件的谓词。 | 135 136**示例:** 137 138```ts 139let predicates = new dataSharePredicates.DataSharePredicates() 140predicates.equalTo("NAME", "lisi") 141 .or() 142 .equalTo("NAME", "Rose") 143``` 144 145### contains 146 147contains(field: string, value: string): DataSharePredicates 148 149该接口用于配置谓词以匹配值包含指定字段的字段。 150 151目前仅RDB支持该谓词。 152 153**系统接口:** 此接口为系统接口。 154 155**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 156 157**参数:** 158 159| 参数名 | 类型 | 必填 | 说明 | 160| ------ | ------ | ---- | -------------------- | 161| field | string | 是 | 数据库表中的列名。 | 162| value | string | 是 | 指示值中包含该字段。 | 163 164**返回值:** 165 166| 类型 | 说明 | 167| ------------------------------------------- | -------------------------- | 168| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 169 170**示例:** 171 172```ts 173let predicates = new dataSharePredicates.DataSharePredicates() 174predicates.contains("NAME", "os") 175``` 176 177### beginsWith 178 179beginsWith(field: string, value: string): DataSharePredicates 180 181该接口用于配置谓词以匹配值以指定字符串起始的字段。 182 183目前仅RDB支持该谓词。 184 185**系统接口:** 此接口为系统接口。 186 187**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 188 189**参数:** 190 191| 参数名 | 类型 | 必填 | 说明 | 192| ------ | ------ | ---- | ---------------------- | 193| field | string | 是 | 数据库表中的列名。 | 194| value | string | 是 | 指示值以该字符串起始。 | 195 196**返回值:** 197 198| 类型 | 说明 | 199| ------------------------------------------- | -------------------------- | 200| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 201 202**示例:** 203 204```ts 205let predicates = new dataSharePredicates.DataSharePredicates() 206predicates.beginsWith("NAME", "os") 207``` 208 209### endsWith 210 211endsWith(field: string, value: string): DataSharePredicates 212 213该接口用于配置谓词以匹配值以指定字符串结尾的字段。 214 215目前仅RDB支持该谓词。 216 217**系统接口:** 此接口为系统接口。 218 219**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 220 221**参数:** 222 223| 参数名 | 类型 | 必填 | 说明 | 224| ------ | ------ | ---- | ---------------------- | 225| field | string | 是 | 数据库表中的列名。 | 226| value | string | 是 | 指示值以该字符串结尾。 | 227 228**返回值:** 229 230| 类型 | 说明 | 231| ------------------------------------------- | -------------------------- | 232| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 233 234**示例:** 235 236```ts 237let predicates = new dataSharePredicates.DataSharePredicates() 238predicates.endsWith("NAME", "os") 239``` 240 241### isNull 242 243isNull(field: string): DataSharePredicates 244 245该接口用于配置谓词以匹配值为null的字段。 246 247目前仅RDB及KVDB(schema)支持该谓词。 248 249**系统接口:** 此接口为系统接口。 250 251**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 252 253**参数:** 254 255| 参数名 | 类型 | 必填 | 说明 | 256| ------ | ------ | ---- | ------------------ | 257| field | string | 是 | 数据库表中的列名。 | 258 259**返回值:** 260 261| 类型 | 说明 | 262| ------------------------------------------- | -------------------------- | 263| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 264 265**示例:** 266 267```ts 268let predicates = new dataSharePredicates.DataSharePredicates() 269predicates.isNull("NAME") 270``` 271 272### isNotNull 273 274isNotNull(field: string): DataSharePredicates 275 276该接口用于配置谓词以匹配值不为null的字段。 277 278目前仅RDB及KVDB(schema)支持该谓词。 279 280**系统接口:** 此接口为系统接口。 281 282**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 283 284**参数:** 285 286| 参数名 | 类型 | 必填 | 说明 | 287| ------ | ------ | ---- | ------------------ | 288| field | string | 是 | 数据库表中的列名。 | 289 290**返回值:** 291 292| 类型 | 说明 | 293| ------------------------------------------- | -------------------------- | 294| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 295 296**示例:** 297 298```ts 299let predicates = new dataSharePredicates.DataSharePredicates() 300predicates.isNotNull("NAME") 301``` 302 303### like 304 305like(field: string, value: string): DataSharePredicates 306 307该接口用于配置谓词以匹配指定通配符表达式的字段。 308 309目前仅RDB及KVDB(schema)支持该谓词。 310 311**系统接口:** 此接口为系统接口。 312 313**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 314 315**参数:** 316 317| 参数名 | 类型 | 必填 | 说明 | 318| ------ | ------ | ---- | ---------------------- | 319| field | string | 是 | 数据库表中的列名。 | 320| value | string | 是 | 指示要与谓词匹配的通配符表达式。 <br>表达式中'%'代表零个、一个或多个数字或字符,'_'代表一个单一的数字或字符,不区分大小写。| 321 322**返回值:** 323 324| 类型 | 说明 | 325| ------------------------------------------- | -------------------------- | 326| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 327 328**示例:** 329 330```ts 331let predicates = new dataSharePredicates.DataSharePredicates() 332predicates.like("NAME", "%os%") 333``` 334 335### unlike 336 337unlike(field: string, value: string): DataSharePredicates 338 339该接口用于配置谓词以匹配不类似指定通配符表达式的字段。 340 341目前仅RDB及KVDB(schema)支持该谓词。 342 343**系统接口:** 此接口为系统接口。 344 345**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 346 347**参数:** 348 349| 参数名 | 类型 | 必填 | 说明 | 350| ------ | ------ | ---- | ---------------------- | 351| field | string | 是 | 数据库表中的列名。 | 352| value | string | 是 | 指示要与谓词匹配的通配符表达式。<br>表达式中'%'代表零个、一个或多个数字或字符,'_'代表一个单一的数字或字符,不区分大小写。 | 353 354**返回值:** 355 356| 类型 | 说明 | 357| ------------------------------------------- | -------------------------- | 358| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 359 360**示例:** 361 362```ts 363let predicates = new dataSharePredicates.DataSharePredicates() 364predicates.unlike("NAME", "%os%") 365``` 366 367### glob 368 369glob(field: string, value: string): DataSharePredicates 370 371该接口用于配置谓词以匹配指定通配符表达式的字段。 372 373目前仅RDB支持该谓词。 374 375**系统接口:** 此接口为系统接口。 376 377**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 378 379**参数:** 380 381| 参数名 | 类型 | 必填 | 说明 | 382| ------ | ------ | ---- | ---------------------- | 383| field | string | 是 | 数据库表中的列名。 | 384| value | string | 是 | 指示要与谓词匹配的通配符表达式。<br>表达式中'*'代表零个、一个或多个数字或字符,'?'代表一个单一的数字或字符,区分大小写。| 385 386**返回值:** 387 388| 类型 | 说明 | 389| ------------------------------------------- | -------------------------- | 390| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 391 392**示例:** 393 394```ts 395let predicates = new dataSharePredicates.DataSharePredicates() 396predicates.glob("NAME", "?h*g") 397``` 398 399### between 400 401between(field: string, low: ValueType, high: ValueType): DataSharePredicates 402 403该接口用于配置谓词以匹配值在指定范围内的字段。包含两端边界值,为左闭右闭区间,该字段的数据类型必须为int类型。 404 405目前仅RDB支持该谓词。 406 407**系统接口:** 此接口为系统接口。 408 409**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 410 411**参数:** 412 413| 参数名 | 类型 | 必填 | 说明 | 414| ------ | --------------------------------------------------- | ---- | ------------------------ | 415| field | string | 是 | 数据库表中的列名。 | 416| low | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是 | 指示与谓词匹配的最小值。 | 417| high | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是 | 指示与谓词匹配的最大值。 | 418 419**返回值:** 420 421| 类型 | 说明 | 422| ------------------------------------------- | -------------------------- | 423| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 424 425**示例:** 426 427```ts 428let predicates = new dataSharePredicates.DataSharePredicates() 429predicates.between("AGE", 10, 50) 430``` 431 432### notBetween 433 434notBetween(field: string, low: ValueType, high: ValueType): DataSharePredicates 435 436该接口用于配置谓词以匹配值超出指定范围的字段。不包含两端边界值,为左开右开区间,该字段的数据类型必须为int类型。 437 438目前仅RDB支持该谓词。 439 440**系统接口:** 此接口为系统接口。 441 442**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 443 444**参数:** 445 446| 参数名 | 类型 | 必填 | 说明 | 447| ------ | --------------------------------------------------- | ---- | ------------------------ | 448| field | string | 是 | 数据库表中的列名。 | 449| low | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是 | 指示与谓词匹配的最小值。 | 450| high | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是 | 指示与谓词匹配的最大值。 | 451 452**返回值:** 453 454| 类型 | 说明 | 455| ------------------------------------------- | -------------------------- | 456| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 457 458**示例:** 459 460```ts 461let predicates = new dataSharePredicates.DataSharePredicates() 462predicates.notBetween("AGE", 10, 50) 463``` 464 465### greaterThan 466 467greaterThan(field: string, value: ValueType): DataSharePredicates 468 469该接口用于配置谓词以匹配值大于指定值的字段。 470 471目前仅RDB及KVDB(schema)支持该谓词。 472 473**系统接口:** 此接口为系统接口。 474 475**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 476 477**参数:** 478 479| 参数名 | 类型 | 必填 | 说明 | 480| ------- | --------- | ---- | ---------------------- | 481| field | string | 是 | 数据库表中的列名。 | 482| value | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是 | 指示要与谓词匹配的值。 | 483 484**返回值:** 485 486| 类型 | 说明 | 487| ------------------------------------------- | -------------------------- | 488| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 489 490**示例:** 491 492```ts 493let predicates = new dataSharePredicates.DataSharePredicates() 494predicates.greaterThan("AGE", 10) 495``` 496 497### lessThan 498 499lessThan(field: string, value: ValueType): DataSharePredicates 500 501该接口用于配置谓词以匹配值小于指定值的字段。 502 503目前仅RDB及KVDB(schema)支持该谓词。 504 505**系统接口:** 此接口为系统接口。 506 507**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 508 509**参数:** 510 511| 参数名 | 类型 | 必填 | 说明 | 512| ------ | --------------------------------------------------- | ---- | ---------------------- | 513| field | string | 是 | 数据库表中的列名。 | 514| value | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是 | 指示要与谓词匹配的值。 | 515 516**返回值:** 517 518| 类型 | 说明 | 519| ------------------------------------------- | -------------------------- | 520| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 521 522**示例:** 523 524```ts 525let predicates = new dataSharePredicates.DataSharePredicates() 526predicates.lessThan("AGE", 50) 527``` 528 529### greaterThanOrEqualTo 530 531greaterThanOrEqualTo(field: string, value: ValueType): DataSharePredicates 532 533该接口用于配置谓词以匹配值大于或等于指定值的字段。 534 535目前仅RDB及KVDB(schema)支持该谓词。 536 537**系统接口:** 此接口为系统接口。 538 539**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 540 541**参数:** 542 543| 参数名 | 类型 | 必填 | 说明 | 544| ------- | --------- | ---- | ---------------------- | 545| field | string | 是 | 数据库表中的列名。 | 546| value | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是 | 指示要与谓词匹配的值。 | 547 548**返回值:** 549 550| 类型 | 说明 | 551| ------------------------------------------- | -------------------------- | 552| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 553 554**示例:** 555 556```ts 557let predicates = new dataSharePredicates.DataSharePredicates() 558predicates.greaterThanOrEqualTo("AGE", 10) 559``` 560 561### lessThanOrEqualTo 562 563lessThanOrEqualTo(field: string, value: ValueType): DataSharePredicates 564 565该接口用于配置谓词以匹配值小于或等于指定值的字段。 566 567目前仅RDB及KVDB(schema)支持该谓词。 568 569**系统接口:** 此接口为系统接口。 570 571**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 572 573**参数:** 574 575| 参数名 | 类型 | 必填 | 说明 | 576| ------- | --------- | ---- | ---------------------- | 577| field | string | 是 | 数据库表中的列名。 | 578| value | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是 | 指示要与谓词匹配的值。 | 579 580**返回值:** 581 582| 类型 | 说明 | 583| ------------------------------------------- | -------------------------- | 584| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 585 586**示例:** 587 588```ts 589let predicates = new dataSharePredicates.DataSharePredicates() 590predicates.lessThanOrEqualTo("AGE", 50) 591``` 592 593### distinct 594 595distinct(): DataSharePredicates 596 597该接口用于配置谓词以过滤重复记录并仅保留其中一个。 598 599目前仅RDB支持该谓词。 600 601**系统接口:** 此接口为系统接口。 602 603**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 604 605**返回值:** 606 607| 类型 | 说明 | 608| ------------------------------------------- | -------------------------- | 609| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 610 611**示例:** 612 613```ts 614let predicates = new dataSharePredicates.DataSharePredicates() 615predicates.equalTo("NAME", "Rose").distinct() 616``` 617 618### groupBy 619 620groupBy(fields: Array<string>): DataSharePredicates 621 622该接口用于配置谓词按指定列分组查询结果。 623 624目前仅RDB支持该谓词。 625 626**系统接口:** 此接口为系统接口。 627 628**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 629 630**参数:** 631 632| 参数名 | 类型 | 必填 | 说明 | 633| ------ | ------------- | ---- | -------------------- | 634| fields | Array<string> | 是 | 指定分组依赖的列名。 | 635 636**返回值:** 637 638| 类型 | 说明 | 639| ------------------------------------------- | -------------------------- | 640| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 641 642**示例:** 643 644```ts 645let predicates = new dataSharePredicates.DataSharePredicates() 646predicates.groupBy(["AGE", "NAME"]) 647``` 648 649### indexedBy 650 651indexedBy(field: string): DataSharePredicates 652 653该接口用于配置谓词按指定索引列查询结果。使用该方法前,需要设置索引列。 654 655目前仅RDB支持该谓词。 656 657**系统接口:** 此接口为系统接口。 658 659**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 660 661**参数:** 662 663| 参数名 | 类型 | 必填 | 说明 | 664| ------ | ------ | ---- | -------------- | 665| field | string | 是 | 索引列的名称。 | 666 667**返回值:** 668 669| 类型 | 说明 | 670| ------------------------------------------- | -------------------------- | 671| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 672 673**示例:** 674 675```ts 676let predicates = new dataSharePredicates.DataSharePredicates() 677predicates.indexedBy("SALARY_INDEX") 678``` 679 680### notIn 681 682notIn(field: string, value: Array<ValueType>): DataSharePredicates 683 684该接口用于配置谓词以匹配值不在指定范围内的字段。 685 686目前仅RDB及KVDB(schema)支持该谓词。 687 688**系统接口:** 此接口为系统接口。 689 690**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 691 692**参数:** 693 694| 参数名 | 类型 | 必填 | 说明 | 695| ------- | ---------------- | ---- | --------------------------------------- | 696| field | string | 是 | 数据库表中的列名。 | 697| value | Array<[ValueType](js-apis-data-valuesBucket.md#valuetype)> | 是 | 以ValueType型数组形式指定的要匹配的值。 | 698 699**返回值:** 700 701| 类型 | 说明 | 702| ------------------------------------------- | -------------------------- | 703| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 704 705**示例:** 706 707```ts 708let predicates = new dataSharePredicates.DataSharePredicates() 709predicates.notIn("NAME", ["Lisa", "Rose"]) 710``` 711 712### prefixKey 713 714prefixKey(prefix: string): DataSharePredicates 715 716该接口用于配置谓词以匹配键前缀的指定字段。 717 718目前仅KVDB支持该谓词。 719 720**系统接口:** 此接口为系统接口。 721 722**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 723 724**参数:** 725 726| 参数名 | 类型 | 必填 | 说明 | 727| ------ | ------ | ---- | -------------- | 728| prefix | string | 是 | 指定的键前缀。 | 729 730**返回值:** 731 732| 类型 | 说明 | 733| ------------------------------------------- | -------------------------- | 734| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 735 736**示例:** 737 738```ts 739let predicates = new dataSharePredicates.DataSharePredicates() 740predicates.prefixKey("NAME") 741``` 742 743### inKeys 744 745inKeys(keys: Array<string>): DataSharePredicates 746 747该接口用于配置谓词以匹配键在指定范围内的字段。 748 749目前仅KVDB支持该谓词。 750 751**系统接口:** 此接口为系统接口。 752 753**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 754 755**参数:** 756 757| 参数名 | 类型 | 必填 | 说明 | 758| ------ | ------------- | ---- | ------------------ | 759| keys | Array<string> | 是 | 指定范围的键数组。 | 760 761**返回值:** 762 763| 类型 | 说明 | 764| ------------------------------------------- | -------------------------- | 765| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 766 767**示例:** 768 769```ts 770let predicates = new dataSharePredicates.DataSharePredicates() 771predicates.inKeys(["Lisa", "Rose"]) 772```