Domino查询语言语法解析(二)

大家好,才是真的好。好像没多久,但转眼一看,已经过了一个星期,就是一周以前,我发了一篇Domino查询语言语法解析(一),不知道大家忘记了没?语法解析一只是一个入门,今天我们继续来讨论一下DQL的语法。

一、逻辑运算符和顺序

大家还记得逻辑符吗?and、or、and not、or not四个,即且、或、且否、或否。比如以下语句:

Order_origin in (‘London’, ‘LA’, ‘Tokyo’) AND date_origin > @dt(‘20160511’) or partno = 388388

猜一猜这段代码的执行吧?从某个数据库中取出,Order_origin字段值为London, LA, Tokyo中的一个且date_origin字段值必须为2016年5月11号以后的所有文档,或者partno字段值为388388的文档。这个和执行的先后顺序有关,默认地,DQL按照语句的先后顺序执行

当然,下面这段,因为后面的or语句被整体括号在一块,所以会优先执行

‘Soon to be special’.Status = ‘Shipping’ and ( order_origin = ‘LA’ or sales_person in    (‘Chad Keighley’, ‘Jeff Chantel’, ‘Louis Cawlfield’, ‘Mariel Nathanson’)) 

其意思正是,先取出date_origin字段值为LA,或sales_person字段值为

‘Chad Keighley’, ‘Jeff Chantel’, ‘Louis Cawlfield’, ‘Mariel Nathanson’中的一个,符合这些条件的所有文档,而后这些文档要符合在名为Soon to be special(谁会取这种名字?)视图中的Status列值为Shipping。

下面这个语句则更进一步使用or Not逻辑符,返回的那些文档,必须符合名为Soon to be special视图中的Status列值为Inventory,并且order_origin为Detroit,sales_person不能为‘Harold Cunningham’, ‘Julie Leach’, ‘Gordon Smith’, ‘Terence Henry’中的一个。

‘Soon to be special’.Status = ‘Inventory’ and ( order_origin = ‘Detroit’ or NOT sales_person in                                        (‘Harold Cunningham’, ‘Julie Leach’, ‘Gordon Smith’, ‘Terence Henry’))

二、in all语句

in前面我们使用过,在后面加上一个all语句,则是必须包含括号中的所有值,比如Part_no in all ( 389, 27883, 388388, 587992 ) ,文档中的Part_no必须同时包含389, 27883, 388388, 587992四个值,而categories In all (‘test1’,’test2’) ” 意思是categories必须拥有test1和test2两个值,如下图
这里写图片描述
而后可以获得这个文档
这里写图片描述
像语句in all (‘Orders’, ’Special orders folder 1’, ‘Old_orders 2’) 则是指必须同时出现在‘Orders’, ’Special orders folder 1’, ‘Old_orders 2’文件夹或视图中的那些文档。

三、几个问题

Q1:DQL中的语句区分大小写吗?比如字段名和字段中的值?
A1: 目前就我测试的结果来看,不区分。

Q2: 执行DQL语句搜索的数据库是不是需要建立索引。
A2:就目前测试来看,不需要。只需要执行我在前面一篇中提到的几个步骤即可。

Q3:以前我们知道,使用数据库索引搜索文档之前,必须要更新索引,DQL搜索执行时,是不是每次都需要更新相应的索引?
A3:不需要执行任何索引更新,DQL直接在数据库中进行搜索。

好了,如果你有更多问题,欢迎给我留言。

更多精彩内容可关注微信公众号:“协作者”
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值