3

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

等效的 SQL 将是:

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

是否可以在必须使用“OR”重复该字段的情况下在 AdsTable 上执行相同的操作?

我想要类似的东西:

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

代替:

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

2 回答 2

2

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

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

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

于 2011-06-17T15:06:42.763 回答
1

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

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

Advantage Expression Engine有关和的更多信息在Advantage 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

于 2011-06-20T09:12:16.470 回答