我想使用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'
答案 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 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