首页 > 代码库 > IQueryFielter接口

IQueryFielter接口

 

IQueryFilter基于属性查询过滤数据。需要定义一个where子句。可以指定要返回值的字段列表。如果没有指定列,将返回所有值。当需要根据属性值和属性的关系过滤数据时,使用该接口。

成员

AddField,OutputSpatialReference,SubFields,WhereClause

IQueryFilter.WhereClause属性

public string WhereClause{get;set;}

WhereClause子句用于指定子句限制要素。

字段名称

在file geodatabase,shapefile,dBase table,coverage,INFO table中查询,字段名称用””括住,如“AREA”。

在personal geodatabase中,字段名称用[]括住。

在ArcSDE geodatabase或ArcIMS image service或 feature service中查询时,字段名不用括住。

在工作表如Excel文件(.xls文件)或text文件(.txt文件)中查询时,字段用‘’括住,使用表格窗体的Select By Attributes对话框时,用中括号[]。

字符

字符都用‘’。

Personal geodatabase中不区分大小写,但在ArcSDE,File和shapefiles中区分大小写。可以用SQL函数将值转化成大写或小写。使用基于文件的数据源时,用UPPER或LOWER函数。例如下个表达式将选择名为Jones或JONES的客户:UPPER(“LAST_NAME”)=’JONES’.其他数据源也有相同的函数例如personal geodatabase中的UCASE和LCASE函数。

使用LIKE可以创建一个不完整的搜索字符。

通配符

通配符时表示一个或多个字符的特殊符号。

在基于文件的数据中使用‘%’表示任意个字符,‘_’表示一个字符。在personal geodatabase中‘*’表示任意个字符,‘_’表示一个字符。

注意在表达式中使用‘=’和通配符,通配符将会作为一个字符对待。

在连接表中,使用通配符要适合连接的数据源,如果查询涉及连接的两个部分,使用‘%’和‘_’通配符。例如,将一个dbf文件(join table)连接到个人数据库的要素类中(target table)。

使用‘*’查询个人数据库的字段,使用‘%’查询dbf的字段,使用‘%’查询两个数据源的字段。

 

与QueryDef对象不同,QueryFilter对象支持所有的workspace,包括shapefiles和coverages。要使用ORDER BY和GROUP BY子句查询属性,查看IQueryFielterDefinition::PostfixClause。

 

public void IQueryFilter_(IFeatureClass featureClass)
{      
    IQueryFilter queryFilter=new QueryFilterClass();             
    queryFilter.SubFields="STATE_NAME,POPULATION";      
    queryFilter.WhereClause="STATE_NAME=‘CaliFornia‘";      
    IFeatureCursor featureCursor=featureClass.Search(queryFilter,false);
}

 

IQueryFielter接口