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

構文はINSQLでのみ機能し、フィルターやインデックスで使用される式エンジンでは機能しません。

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

于 2011-06-20T09:12:16.470 に答える