select()

阅读(1430) 标签: select,

函数说明:

从数据集的当前行集中选取符合条件的记录

语法:

datasetName.select(<select_exp>{: order_exp},{ filter_exp },{num_exp},{distinct_exp})

datasetName.select(<select_exp>{,filter_exp},{num_exp},{distinct_exp}; {sort1_exp}:{order1_exp},.) //适用于不需排序或数据集中已排好序

参数说明:

select_exp:选择的字段列名/列号,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推

order _exp:  指定数据排序的顺序,<0表示降序排列,>0表示升序排列。

filter_exp:  数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位。

num_exp:  获取查询结果的前n条记录

distinct_exp:  筛选某字段,返回唯一不同的值

sort1_exp:  数据排序表达式。当此项为空时先检查order_exp是否为空,如果为空,则不排序,否则使用select_exp排序。

返回值:

一组数据的集合,数据类型由select_exp的运算结果决定

选项:

@r  是否为根数据集表达式

@z  从后往前取数,num_exp省略时返回全部

示例:

1ds1.select( name )

从数据集ds1中选取name字段列的所有值, 不排序

2ds1.select( #2:-1)

从数据集ds1中选取第二个字段列的所有值并降序排列

3ds1.select( name:1, gender =='1')

从数据集ds1中选取性别为男性的name字段列的值并升序排列

4ds1.select( name:-1, gender =='1',50, id )

从数据集ds1中筛选掉id字段重复值,选取50条性别为男性的name字段列的值并按name字段降序排列

5ds1.select(int(EMPID), gender =='1',50,id;BONUS:1)

从数据集ds1中筛选掉id字段重复值,将数据集按BONUS升序排列,选取50条性别为男性的EMPID字段列的值

6ds1.select@r(#9:-1,SALARY>=10000)

从根数据集ds1中筛选SALARY大于10000的第9列的值并降序排列

7ds1.select@z(#9:1,SALARY>=10000)

从数据集ds1中筛选SALARY大于10000的第9列的最后3个值并降序排列

注意

select()函数选出了一组字段值,该组字段值保留了一个指针,指向数据集中的源记录,也就是说,该组字段值和数据集中的记录保持一一对应的关系,因此在当前格的附属单元格里(如B2C2),如果采取dsn.colname 的表达式从当前数据集里取其他字段的值,默认从当前主格指向的记录里取值,而不需要到数据集中检索。因此,在当前格的附属格里建议尽量使用dsn.colname表达式,而不采用dsn.select(colname, filterexp, number),因为后者需要对表达式进行解析,速度慢。