我可以在Advantage数据库表(TAdsTable)上使用“IN”过滤器吗?

时间:2011-06-10 11:57:22

标签: sql filter advantage-database-server where-in

我想使用Integer字段的多个值将过滤器应用于优势表。

等效的SQL将是:

SELECT * FROM TableName WHERE FieldName IN (1, 2, 3)

是否可以在AdsTable上使用“OR”重复该字段?

我想要像:

Filter := 'FieldName IN (1, 2, 3)'

而不是:

Filter := 'FieldName = 1 OR FieldName = 2 OR FieldName = 3'

2 个答案:

答案 0 :(得分:2)

可以使用INLIST功能。该函数存在Visual FoxPro兼容性。它看起来像是:

Filter := 'InList(FieldName, 1, 2, 3)';

但是,我不相信它目前已经过优化以使用索引。因此,如果表格非常大,使用过滤器的FieldName = 1 OR FieldName = 2 ...版本效率会更高。

答案 1 :(得分:1)

IN语法仅适用于SQL,不适用于过滤器和索引中使用的表达式引擎。

正如Mark已经建议的那样,我将使用FieldName = 1 OR FieldName = 2 ...语法。

有关Advantage Expression EngineAdvantage Optimized filters的更多信息,请参阅帮助:

http://devzone.advantagedatabase.com/dz/WebHelp/Advantage10.1/master_advantage_expression_engine.htm

http://devzone.advantagedatabase.com/dz/WebHelp/Advantage10.1/master_advantage_optimized_filters.htm