描述:
根据实表返回序表。
语法:
T.import(x:C,…;wi,...)
备注:
根据实表T返回序表,相当于T.cursor(...).fetch()。
参数:
T |
实表。 |
x |
表达式。 |
C |
列名。 |
wi |
过滤条件,缺省读取全集,多个条件之间用逗号隔开,为AND关系。除常规的过滤表达式外,过滤条件中还支持如下几种写法,其中K表示实表T中的字段: 1.K=w w通常使用表达式Ti.find(K)或Ti.pfind(K),Ti为序表,w为null或false时将被过滤掉;当w为表达式Ti.find(K)且被选出字段C,...中包含K时,K将被赋值为Ti的指引字段; 当w为表达式Ti.pfind(K)且被选出字段C,...中包含K时,K将被赋值为K在Ti 中的序号。 2.(K1=w1,…Ki=wi,w) Ki=wi为赋值表达式,参数wi通常可以使用表达式Ti.find(Ki)或Ti.pfind(K),Ti为序表;当wi为表达式Ti.find(Ki)且被选出字段C,...中包含Ki时,Ki将被赋值为Ti的指引字段; 当wi为表达式Ti.pfind(Ki)且被选出字段C,...中包含Ki时,Ki将被赋值为Ki在Ti 中的序号。 w为过滤表达式, w中可引用Ki。 3.K:Ti Ti为序表,用实表中Ki的值与Ti的键值作对比,匹配不上的将被过滤掉;当选出字段C,...中包含K时,K将被赋值为Ti的指引字段。 4.K:Ti:null 符合K:Ti的记录将被过滤掉。 5.K:Ti:# 用序号定位,根据实表中K的值去对比序表Ti的记录序号,对应不上的记录将被过滤掉;当选出字段C,...中包含K时,K将被赋值为Ti的指引字段。 |
选项:
@v |
生成纯序表列式。 |
@x |
完成后自动关闭T。 |
序表
示例:
|
A |
|
1 |
for 100 |
|
2 |
=to(10000).new(#:k1,rand():c1).sort@o(k1) |
生成数据。 |
3 |
=to(10000).new(#:k1,rand(10000):c2,rand()*1000:c3).sort@o(k1) |
|
4 |
=A2.cursor() |
|
5 |
=A3.cursor() |
|
6 |
=file("D:\\tb1.ctx") |
创建组表基表。 |
7 |
=A6.create(#k1,c1) |
|
8 |
=A7.append(A4) |
|
9 |
=A7.attach(table4,c2,c3) |
|
10 |
=A9.append(A5) |
|
11 |
=A9.cursor(;c2<1000;2:3) |
将附表中c2<1000的记录分为3段,返回第2段的所有列组成的游标。 |
12 |
=A11.fetch() |
获得游标中的数据。 |
13 |
=A9.import@x(;c2<1000;2:3) |
结果与A12相同,完成后自动关闭A9实表。 |
多种过滤方式
|
A |
|
1 |
=file("emp.ctx") |
|
2 |
=A1.open() |
打开组表文件。 |
3 |
=A2.import() |
省略参数,返回实表中的所有数据 : |
4 |
=5.new(~:ID,~*~:Num).keys(ID) |
生成ID为键的序表: |
5 |
=A2.import(EID,NAME;EID=A4.find(EID)) |
使用K=w过滤方式,w是Ti.find(K),实表中使EID=A4.find(EID)计算结果为null或false的记录过滤掉;EID为选出字段,赋值为序表A4的指引字段: |
6 |
=A2.import(EID,NAME;EID=A4.pfind(EID)) |
使用K=w过滤方式,w是Ti.pfind(K),实表中使EID=A4.pfind(EID)计算结果为null或false的记录过滤掉;EID为选出字段,赋值为EID在序表A4中的序号: |
7 |
=A2.import(EID,NAME;EID:A4) |
使用K:Ti过滤方式,用实表中EID的值与序表的键值作对比,匹配不上的将被过滤掉 |
8 |
=A2.import(NAME,SALARY;EID:A4) |
K不被选出的情况,EID不是选出字段,仅过滤 |
9 |
=A2.import(EID,NAME;EID:A4:null) |
使用K:Ti:null过滤方式,用实表中EID的值与序表的键值作对比,可以匹配上的将被过滤掉 |
10 |
=A2.import(EID,NAME;EID:A4:#) |
使用K:Ti:#过滤方式,根据实表中EID的值去对比序表的记录序号,对应不上的记录将被过滤掉 |
11 |
=connect("demo").query("select top 2 NAME,GENDER from employee").keys(NAME) |
返回序表,键为NAME |
12 |
=A2.import(EID,NAME;(EID=A4.find(EID),NAME=A11.find(NAME), EID!=null&&NAME!=null)) |
使用(K1=w1,…Ki=wi,w)过滤方式,返回符合所有条件的记录 |