我想将过滤器应用于使用整数字段的多个值的优势表。
等效的 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'
我想将过滤器应用于使用整数字段的多个值的优势表。
等效的 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'
可以为此使用该INLIST功能。该函数的存在是为了与 Visual FoxPro 兼容。它看起来像:
Filter := 'InList(FieldName, 1, 2, 3)';
但是,我不认为它目前已优化为使用索引。FieldName = 1 OR FieldName = 2 ...所以如果表非常大,使用过滤器的版本会效率更高。
该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