描述:
游标与可分段集文件外键式连接。
语法:
cs.joinx(C:…,f:K:…,x:F,…;…;…;n)
备注:
用游标cs中的字段C,…匹配可分段集文件f的字段K找到相应记录,然后拼接上该记录的表达式x作为字段F添加到cs中形成新游标。匹配不上外键的记录,字段值缺省填写为null。 f对K有序。
该函数返回的游标不可回转。
选项:
@i |
匹配不上外键则删除整条记录,缺省填成null。 没有x:F参数时,只做针对cs的过滤。 |
@d |
删除匹配上外键的整条记录,只做针对cs的过滤操作,此时省略参数x:F。 |
@q |
cs数据量不大或是序列时,有序匹配加快速度 ; cs是序列时也返回序列。 |
@u |
不保持cs的原次序,可加快速度。 |
@m |
cs对C有序,f对K有序,可用归并方式计算; 此时允许f是游标,cs是多路游标时,f则是同步的多路游标。 |
cs |
游标/多路游标。 |
C |
游标cs的外键。 |
f |
可分段集文件。 |
K |
f的字段,K为#时理解为序号。 |
x |
f的字段表达式。 |
F |
表达式x的字段名。 |
n |
缓存区行数。 |
游标/序列
示例:
游标与集文件常规连接:
|
A |
|
1 |
=file("PersonnelInfo.txt").cursor@t(ID,Name,City,State) |
返回游标,数据内容如下: |
2 |
=file("StateFile.btx") |
返回对ABBR有序的分段集文件,文件中数据如下: |
3 |
=A1.joinx(State,A2:ABBR,NAME:SName,CAPITAL:SCapital;10000) |
用A1游标中的字段State匹配StateFile.btx的ABBR字段,将StateFile.btx的NAME、CAPITAL列分别作为SName、SCapital字段拼接到A1游标上形成新的游标。 |
4 |
=A3.fetch@x(100) |
读取A3游标中的前100条记录,读完后关闭游标,返回内容如下: |
使用@i选项,删除外键不匹配的记录:
|
A |
|
1 |
=file("PersonnelInfo.txt").cursor@t(ID,Name,City,State) |
返回游标,数据内容如下: |
2 |
=file("StateFile.btx") |
返回对ABBR有序的分段集文件,文件中数据如下: |
3 |
=A1.joinx@i(State,A2:ABBR,NAME:SName,CAPITAL:SCapital;10000) |
使用@i选项,A1游标中外键State匹配不上的记录删除。 |
4 |
=A3.fetch@x(100) |
读取A3游标中的前100条记录,读完后关闭游标,返回内容如下: |
使用@d选项:
|
A |
|
1 |
=file("PersonnelInfo.txt").cursor@t(ID,Name,City,State) |
返回游标,数据内容如下: |
2 |
=file("StateFile.btx") |
返回对ABBR有序的分段集文件,文件中数据如下: |
3 |
=A1.joinx@d(State,A2:ABBR;10000) |
使用@d选项,保留A1游标中外键State匹配不上的记录。 |
4 |
=A3.fetch@x(100) |
读取A3游标中的前100条记录,读完后关闭游标,返回内容如下: |
cs为序表时,使用@q选项:
|
A |
|
1 |
=file("PersonnelInfo.txt").import@t(ID,Name,City,State) |
返回序表内容如下: |
2 |
=file("StateFile.btx") |
返回对ABBR有序的分段集文件,文件中数据如下: |
3 |
=A1.joinx@iq(State,A2:ABBR,NAME:SName,CAPITAL:SCapital) |
cs为序表时返回序表,使用@q选项,提升计算速度,返回结果如下: |
f是游标,使用@m选项,归并方式计算:
|
A |
|
1 |
=file("PersonnelInfo.txt").cursor@t(ID,Name,City,State).sortx(State) |
返回对State有序的游标,数据内容如下: |
2 |
=file("StateFile.btx").cursor@b() |
返回对State有序的游标,数据如下: |
3 |
=A1.joinx@m(State,A2:ABBR,NAME:SName,CAPITAL:SCapital;10000) |
A1对State有序,A2对ABBR有序,使用@m选项,用归并方式计算。 |
4 |
=A3.fetch@x(100) |
读取A3游标中的前100条记录,读完后关闭游标,返回内容如下: |