本章介绍find()函数的多种用法。
描述:
查找主键为k的成员。
语法:
A.find(k)
备注:
从排列/序表A中找到主键等于k的成员,有索引表则使用索引表。
参数:
A |
排列/序表 |
k |
主键,主键多个时用序列表示 |
选项:
@b |
二分法查找,要求A必须有序,否则会导致结果不正确,忽略索引表 |
@k |
当参数k是序列时被认为是键值序列,返回键值对应的A的成员 |
返回值:
记录
示例:
|
A |
|
1 |
=demo.query("select * from EMPLOYEE") |
|
2 |
=A1.keys(NAME,DEPT) |
|
3 |
=A1.find(["Alexis","Sales"]) |
键有多个,因此组成序列 |
4 |
=demo.query("select * from EMPLOYEE") |
该序表按照EID字段有序 |
5 |
=A4.keys(EID) |
|
6 |
=A4.find@b(3) |
用@b选项,二分法查找,提高运算速度 |
7 |
=A4.find@k(2,15,69,220) |
使用@k选项,返回键值对应的成员 |
相关概念:
描述:
获取内表中指定主键所在的记录。
语法:
T.find(k,…)
备注:
从内表T中查找主键等于k的记录。
参数:
T |
内表 |
k |
主键,主键多个时用序列表示 |
选项:
@k |
可以查找多条记录,返回成排列。主键有多个时,参数k的写法为 [[k1,k2],[...],...] |
返回值:
记录/排列
示例:
|
A |
|
1 |
=demo.cursor("select EID,NAME,GENDER from employee where EID< 10") |
返回游标 |
2 |
=A1.memory() |
返回内表 |
3 |
=A2.keys(EID,NAME) |
设置EID,NAME为内表键字段 |
4 |
=A2.find([8,"Megan"]) |
因为有多个主键,所以组成序列 |
5 |
=A2.keys(EID,GENDER) |
设置EID,GENDER为内表键字段 |
6 |
=A2.find@k([[8,"F"],[2,"F"]]) |
用@k选项,查询多条记录 |
7 |
=A2.keys(EID) |
设置EID为内表键字段 |
8 |
=A2.find(3) |
查询主键为3的记录 |
描述:
获取基表中指定主键所在的记录。
语法:
T.find(k;x:C,..)
备注:
从基表T中查找主键等于k的记录,然后返回由C构成的记录。键值可以只写前面维字段的,只要能唯一确定即可。
参数:
T |
基表 |
k |
主键,主键多个时用序列表示 |
x |
列名,缺省读取全部列 |
C |
列别名,可省略 |
选项:
@k |
查找多条记录,返回成排列。主键有多个时,参数k的写法为:[[k1,k2],[...],...] |
返回值:
记录/排列
示例:
|
A |
|
1 |
=file("E:/find1.ctx") |
返回游标 |
2 |
=A1.create() |
打开维为EID,NAME的组表基表 |
3 |
=A2.find([8,"Megan"]) |
x省略返回所有列 |
4 |
=A2.find([8,"Megan"];EID,SALARY) |
返回指定列 |
5 |
=A2.find@k([[4,"Emily"], [8,"Megan"]];EID,SALARY) |
用@k选项,查询多条记录 |