T.import()

阅读(427) 标签: 实表, 返回, 序表,

描述:

根据实表返回序表。

语法:

T.import(x:C,…;wi,...)

备注:

根据实表T返回序表,相当于T.cursor(...).fetch()

参数:

T

实表。

x

表达式。

C

列名。

wi

过滤条件,缺省读取全集,多个条件之间用逗号隔开,为AND关系。除常规的过滤表达式外,过滤条件中还支持如下几种写法,其中K表示实表T中的字段:

1K=w

w通常使用表达式Ti.find(K)Ti.pfind(K)Ti为序表,wnullfalse时将被过滤掉;当w为表达式Ti.find(K)且被选出字段C,...中包含K时,K将被赋值为Ti的指引字段; w为表达式Ti.pfind(K)且被选出字段C,...中包含K时,K将被赋值为KTi 中的序号。

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将被赋值为KiTi 中的序号。

w为过滤表达式, w中可引用Ki

3K:Ti

Ti为序表,用实表中Ki的值与Ti的键值作对比,匹配不上的将被过滤掉;当选出字段C,...中包含K时,K将被赋值为Ti的指引字段。

4K:Ti:null

符合K:Ti的记录将被过滤掉。

5K: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过滤方式,wTi.find(K),实表中使EID=A4.find(EID)计算结果为nullfalse的记录过滤掉;EID为选出字段,赋值为序表A4的指引字段:

6

=A2.import(EID,NAME;EID=A4.pfind(EID))

使用K=w过滤方式,wTi.pfind(K),实表中使EID=A4.pfind(EID)计算结果为nullfalse的记录过滤掉;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)过滤方式,返回符合所有条件的记录