描述:
根据键值查找实表/复组表中的记录。
语法:
T.find(k;x:C,..)
备注:
从实表/复组表T中查找主键值为k的记录,用C构成记录返回,C省略则返回所有字段,k可以只用前面维字段的键值,只要能确定唯一即可。
T有时间键时,在基本键相同的记录中寻找时间键值不大于k值中最大者对应的记录,k中若未写时间键值则按now()计算,即取最新的。
参数:
T |
实表/复组表。 |
k |
键值,多个键值时用序列表示,可用时间键。 |
x |
列名,缺省读取全部列。 |
C |
列别名,可省略。 |
选项:
@k |
查找多条记录,返回成排列;缺省返回查找第一个k的记录。主键字段有多个的情况下查找多条记录,参数k的写法为:[[k1,k2],[...],...]。 |
记录/排列
示例:
T为基表:
|
A |
|
1 |
=file("E:/find1.ctx") |
返回游标。 |
2 |
=A1.open() |
打开维为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选项,查询多条记录: |
T为附表:
|
A |
|
1 |
=file("ctb.ctx").open() |
打开组表文件。 |
2 |
=A1.attach(table2) |
返回组表中名为table2的附表。 |
3 |
=A2.find(1,2) |
获取附表中主键为1,2的记录: |
4 |
=A2.find@k([[1,2],[3,6]]) |
使用@k选项,查找多条记录: |
T有时间键:
|
A |
|
1 |
=demo.cursor("select top 10 STATE,HIREDATE,EID,NAME from EMPLOYEE ").sortx(STATE,HIREDATE) |
|
2 |
=file("ef.ctx") |
|
3 |
=A2.create@yt(#STATE,#HIREDATE,EID,NAME) |
创建组表,STATE为基本键,HIREDATE为时间键。 |
4 |
=A3.append@i(A1) |
将A1游标中的数据追加到组表的基表中,此时组表基表内容如下: |
5 |
=A4.find(["Texas",date("2006-03-12")]) |
在STATE为“Texas”的记录中寻找时间键值小于等于2006-09-12中的最大者对应的记录: |
6 |
=A4.find("Texas") |
时间键值按now()计算,取最新的日期: |
T为复组表:
|
A |
|
1 |
=connect("demo").cursor("select EID,NAME,GENDER from employee") |
返回游标。 |
2 |
=file("ef.ctx":[1,2]) |
文件组1.ef.ctx、2.ef.ctx。 |
3 |
=A2.create@y(#EID,NAME,GENDER;if(GENDER=="F",1,2)) |
创建复组表,EID为键,GENDER值为F的记录分到1.ef.ctx中,其余分到2.ef.ctx中。 |
4 |
=A3.append@ix(A1) |
将A1游标中的数据追加到复组表中。 |
5 |
=A4.find(3) |
获取复组表中主键值为3的记录,省略参数x,读取全部列,返回内容如下: |
6 |
=A4.find(3;NAME) |
获取复组表中主键值为3的记录,只读取NAME列的值,返回内容如下: |
7 |
=A4.find@k([3,6]) |
使用@k选项,查找多条记录,返回内容如下: |