上一主题: 列表下一主题: IN 子句


Where 子句

一些 Web 服务方法(如 doSelect() 和 doQuery())需要使用 where 子句进行搜索。where 子句是指 SQL 语句中显示在关键字‘WHERE’之后的字符串。例如,按姓氏查找联系人(‘cnt’对象)的 where 子句可以是:

last_name = ‘Jones’

last_name LIKE ‘Jone%’

第二个示例查找所有姓名以‘Jone’开头的联系人,而第一个示例只查找‘Jones’。

CA SDM 仅支持 where 子句的标准 SQL 参数的子集,包括:

圆括号用于分组。不支持显式连接、EXISTS 和 GROUP BY 元素。

列名就是对象的属性名。必须使用在对象级别为属性定义的名称 - 不要使用实际的 DBMS 列名。必须与上一示例中一样用引号将字符串值括起来。CA SDM 数据类型(例如日期和期限)被视为整型,如以下示例所示:

creation_date > 38473489389

允许在 where 子句中使用点标记法,仔细搜索 SREL(外键)类型。例如,以下针对请求 (‘cr’) 对象的查询将返回为具有特定姓氏的联系人分配的所有请求,如下例所示:

assignee.last_name like ‘Martin%’

点标记法可以更方便地建立 where 子句,但是您必须小心谨慎,以确保查询是有效率的查询。如果联系人的 last_name 属性在 DBMS 中没有建立索引(但是,此示例中已经建立索引),则可以确定示例中的查询是没有效率的。要确保搜索 SREL 时索引发挥最佳效用,请使用 CA SDM 对象的 ID 属性。CA SDM 中的所有表都有 ID 属性的索引。

对象的 id 属性可以很容易地从对象的句柄中获得。如前所述,对象句柄是形式为“<objectName>:<id>”的字符串,其中 id 是在各个 CA SDM 对象中找到的 ID 属性值。仅提取 id 部分,然后在 where 子句中使用“<attributeName>.id”。

对象的 id 类型为整型或 UUID。如果为整型,则只需按原样使用。例如,要搜索 rootcause 指向句柄为“rc:1234”的“根原因”对象的请求,where 子句如下:

rootcause.id = 1234

如果对象的 id 为 UUID 类型,则您必须使用以下格式:

U’<uuid>’  

用单引号将 uuid 的字符串表现形式括起来,并添加大写‘U’字符前缀。UUID 值的字符串表现形式是对象句柄的 <id> 部分。

使用前一个示例,如果知道特定联系人的句柄是“cnt: 913B485771E1B347968E530276916387”,则可以构建查询,如以下示例所示:

assignee.id = U’913B485771E1B347968E530276916387’

不要构建查询‘persistent_id’属性的 where 子句,如下例所示:

rootcause.persistent_id = ‘rc:1234’

有关句柄的详细信息,请参阅“即用型句柄”。

详细信息:

数据元素词典

对象和属性

表和对象交叉引用