【问题标题】:Can I use an "IN" filter on an Advantage Database Table (TAdsTable)?我可以在 Advantage 数据库表 (TAdsTable) 上使用“IN”过滤器吗?
【发布时间】:2011-09-12 10:59:16
【问题描述】:

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

等效的 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'

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我使用了 OR 版本,所以我将保持原样。感谢您的回复。
    【解决方案2】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 2018-03-15
      相关资源
      最近更新 更多