IBM FileNet P8, バージョン 5.2.1            

リレーショナル照会

関数の等価性があり、クラスとプロパティーがテーブルと列を表す限りにおいて、Content Engine は、ほぼ SQL-92 準拠の、特に SQL Server 照会構文に一致した照会構文をサポートします。次の情報を提供します。

ステートメントと説明は、次の表に示されている規則に従っています。

規則 表記 説明
太字の大文字 適用外 キーワード・トークンを示します (例: SELECT)。
単一引用符 ' 文法の一部を示す記号を囲みます (例: '*')。
大括弧 [ ] 1 つのトークン、または一連のトークンを囲んでいる場合は、それがオプションの節であることを示します。例: [ORDER BY <orderby>]。(SQL の予約語に対する大括弧の使用については、以下の「」も参照してください。)
中括弧 { } 1 つのトークン、または一連のトークンを囲んでいる場合は、それがオプションの節であることを示します。この節は、複数回繰り返されることがあります。
単一の垂直線 | 選択肢を区切ります。例: AND | OR
引用符を伴わない小括弧 ( ) 優先順位を決定します。例: ( AND | OR)。
イタリック体 <イタリック> 代表的な製品固有のルールを示します。例: <integer>。

キーワードは大文字で表示されますが、キーワードの照合では大/小文字は区別されません (「一般的な照会の例」を参照してください)。

注: SQL の予約語と同じ名前のプロパティーがクラスに含まれている場合、そのプロパティーを検索するときは、エラーを防止するために、SELECT ステートメント内でそのプロパティー名を大括弧 ([ ]) で囲みます (予約語のリストについては、SQL ステートメントの文法を参照してください)。例えば、Document クラスに「From」という名前のプロパティーが含まれている場合 (これは SQL の予約語です)、SELECT ステートメントは、以下のように作成します。
  SELECT d.[DocumentTitle], d.[From], d.[Id] FROM Document d WHERE d.[Creator] = "jsmith"

SQL ステートメントの文法

以下のセクションでは、SQL ステートメントの文法を示します。リンク部分がいくつかありますが、このリンクをクリックすると、カテゴリーまたはキーワードの使用法に関する本書の情報を参照できます。

<query> ::= <SQL query> [ OPTIONS '(' <option> { ',' <option> } ')' ]
     
<option> ::= ( TIMELIMIT | FULLTEXTROWLIMIT | COUNT_LIMIT | <optimization> ) <integer>
<optimization> ::= CBR_CONTENT_FIRST | CBR_DB_FIRST | CBR_DYNAMIC_THRESHOLD

CBR_DYNAMIC_THRESHOLD のみに整数を指定する必要があります。

注:   FULLTEXTROWLIMIT は、全文検索オプションです。詳細については、『FULLTEXTROWLIMIT』を参照してください。
<SQL query> ::= SELECT [DISTINCT| ALL] [TOP<integer>]
                                <select_list>
                               FROM <class_reference>
                               [WHERE <search_condition>]
                               [ORDER BY <orderby> { ',' <orderby> } ]
<select_list> ::= <select_prop> { ',' <select_prop> }{ ',' <custom_function> }
<select_prop> ::= (<property_spec> [ [AS] <entity_name> ] )
                  | ( <class_alias> '.' '*' )
                  | '*'
<class_reference> ::= <from_class> | <qualified_join>
<qualified_join> ::= <joined_class> ( INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] )
                    JOIN <from_class> ON <comparison_predicate>
 
<joined_class> ::= <from_class> | '(' <qualified_join> ')'
<from_class> ::= <class_ident> [ [AS] <class_alias> ] [ WITH (INCLUDESUBCLASSES | EXCLUDESUBCLASSES ) [',' ALLACCESSGRANTED]]
<search_condition> ::= <basic_search_condition> [ ( AND | OR ) <search_condition> ]
 
<basic_search_condition > ::= ( [NOT] '(' <search_condition> ')' ) | <predicate>
<predicate> ::= <comparison_predicate>
                 | <null_test>
                 | <in_test>
                 | <existence_test>
                 | <isclass_test>
                 | <isOfclass_test>
                 | <content_test>
                 | <satisfies_test>
                 | <intersects_test>
 
<comparison_predicate> ::= <scalar_exp> <comparison_op> <scalar_exp> 
<comparison_op> ::= '=' | '<>' | '<' | '>' | '<=' | '>=' | <infolder_op> |             LIKE
<infolder_op> ::= INFOLDER | INSUBFOLDER
<null_test> ::= <property_exp> IS [ NOT ] NULL
 
<in_test> ::= <scalar_exp> IN ( ( '(' <SQL query> | <literal_list> ) ')' ) | <property_spec> )
 
<existence_test> ::= EXISTS '(' <SQL query> ')'
<isclass_test> ::= ISCLASS '(' <class_alias> ',' <class_ident> ')'
 
<isOfclass_test> ::= ISOFCLASS '(' <class_alias> ',' <class_ident> ')'
<content_test> ::= <contains_test> | <freetext_test>
<contains_test> ::= ( CONTAINS ) '(' <content_property_spec>',' <string_literal>[',' <dialect>] ')'
<freetext_test> ::= ( FREETEXT ) '(' <content_property_spec>',' <string_literal> ')'
<content_property_spec> ::= <property_spec> | '(' <class alias> '.' '*')'
<satisfies_test> ::= <property_spec> [AS <class_alias>] SATISFIES '(' <search_condition> ')'
<intersects_test> ::= <list_exp> INTERSECTS <list_exp>
<list_exp> ::= '(' <literal_list> ')'
           | <property_exp>
           | '(' <SQL query> ')'
<scalar_exp> ::= <literal>
                 | <property_exp>
                 | ( '(' <scalar_exp> ')' )
                 | ( <scalar_exp> <arith_op> <scalar_exp> )
                 | <property_spec> [<arith_op> <timespan_exp>]
                 | <now> [<arith_op> <timespan_exp>]
<timespan_exp> ::= timespan [<arith_op> <timespan_exp>]
<now> ::= Now '()'
<arith_op> ::= '+' | '-' | '*' | '/' 
<property_exp> ::= <property_spec> | ( ( UPPER | LOWER  | ABS  ) '(' <scalar_exp> ')' ) | <object_exp>
<object_exp> ::= OBJECT'(' ( <guid> | <string_literal> | <property_spec>) ')' 
<object_exp> ::= SECURITYPRINCIPAL'(' ( <guid> | <string_literal> | <property_spec>) ')' 
<object_exp> ::= CurrentUser'('')' 
<orderby> ::= [ COALESCE '(' <property_spec>, <literal> ')' || <property_spec> ] [ ASC | DESC ]    
<class_ident> ::= <guid> | <entity_name>
     
<class_alias> ::= <integer> | <entity_name>
     
<property_spec> ::= ( <class_alias> '.' <guid> ) | ( [ <class_alias> '.' ] <entity_name> )
     
<entity_name> ::= <simple_name> | <complex_name>
     

以下に示す <simple_name> ルールでは、alpha クラスの文字に下線 (_) 文字が含まれます。

<simple_name> ::= <alpha> { <alpha> | <digit> }
     
<complex_name> ::= ('"' { <any_character> } '"' ) | ( '[' { <any_character> } ']' )
     
<literal_list> ::= <literal> { ',' <literal> }
     
<literal> ::= <string_literal> | <integer> | <float> | 
              <ISO datetime> | <W3C datetime> | TRUE | FALSE | UNKNOWN | <guid>
     
<string_literal> ::= <single_quote> {<any_character>} <single_quote>
     
注: 1 つの引用符をリテラル値の一部として含めるには、連続する 2 つの単一引用符を使用します。例: 'document''1234'。
<ISO datetime> ::= YYYYMMDDThhmmss[,ffff]Z
<W3C datetime> ::= YYYY-MM-DD[Thh:mm:ss[.ffff]][<timezone>]
     
注: 時間部分 (Thh:mm:ss) を省略した場合は、00:00:00 が想定されます。<timezone> オプションを省略した場合は、協定世界時 (UTC) を示す Z が想定されます。
<timezone> ::= Z | ( ( '+' | '-') hh:mm )
<guid> ::= '{'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'}'

照会テキストのクラスおよびプロパティー ID

製品固有のルール <class_ident><property_spec> については、IBM® FileNet® P8 の照会でクラスとプロパティーの識別子を指定する方法が複雑です。製品固有のルール <class_ident> および <property_spec> は、以下のいずれかのルールにすることができます。

  • The 製品固有のルール <class_ident> は、FROM 節において、基本的な識別子として機能します。<class_ident> には、GUID、シンボル名、またはクラスのディスプレイ名を指定できます。

    <class_ident> では、検索可能なクラスのみを指定できます。検索可能なクラスは、SearchScope.fetchSearchableClassDescriptions で識別されます。通常、検索可能なクラスは、オブジェクト・ストア・リポジトリーに存在するクラスであり (RepositoryObject インターフェースを実装)、IndependentObject のサブクラスです。

  • ユーザー定義別名 (数値またはストリング) は、FROM 節を使用してクラスに関連付けることができます。ユーザー定義別名は、プロパティー識別子を修飾するために使用したり、ISCLASS 式の先頭の引数として使用することができます。 明示的な別名が指定されない場合は、以下のルールに従って暗黙的な別名が作成されます。
    • <class_ident> の形式が <entity_name> の場合は、(シンボリック名か表示名かにかかわらず) 使用される名前が別名になります。
    • <class_ident> の形式が <GUID> の場合は、シンボル名が別名になります (シンボル名がサポートされる場合)。それ以外の場合は、表示名が使用されます。
  • SELECT リストのプロパティーは、GUID、シンボル名、または表示名で識別することができます。プロパティー名または GUID を固有に解決できる場合は、クラス修飾子を省略することができます。
  • SELECT ステートメントに含まれるプロパティーには、文字列の別名 (<select_prop>)を与えることができます。この別名は、GUID またはシンボル名/表示名の代わりとして、照会内の他の場所で使用できます。このルールの他に、プロパティー識別子が出現するすべての場所に同じルールが適用されます。
  • SELECT リストのトップレベルのプロパティー (<select_prop>) は、FROM 節の 1 つ以上のクラスに定義された任意のプロパティーにすることができます。トップレベルの選択リストに含まれるプロパティーはすべて選択できるようになりました。以前のリリースでは選択できないプロパティーがたくさんありましたが、この点が変更されています。
  • SELECT リスト内のネストされた SELECT (IN 節または EXISTS 節内の SELECT ステートメント) の <select_list> のプロパティーは、検索可能なプロパティーでなければなりません。「検索可能」として識別されるプロパティーについては、プロパティーの定義を参照してください。ユーザー定義のプロパティーは、列挙カーディナリティーまたは Binary データ型のプロパティーを除いて、すべてが検索可能です。
  • GUID は文字列ではない点に注意してください。照会で GUID を使用して、SELECT 節内で特定のオブジェクト、クラス、またはプロパティーを指定する場合は、GUID を引用符で囲まないでください。次に例を示します。
       SELECT DocumentTitle Id FROM Document WHERE Id={4ECDE7D9-F551-4C53-A109-8D81B1DE8577E}

プロパティー照会用にサポートされる演算子

プロパティーは、プロパティーに格納できるデータの種類を定義するデータ型を持ちます。例えば、整数型のプロパティーは、整数の値のみを保持することができます。(詳細については、「Supported data types」を参照してください。) 照会を作成する際に、データ型によってプロパティー値を検索できます。各データ型は、特定の照会オペランドのセットをサポートします。以下のリストに、IBM FileNet P8 プロパティーのデータ型と、型ごとの有効な演算子を示します。

  • Binary: この型のプロパティーは検索できません (すなわち WHERE 節では指定できません)。
  • Boolean: '=' | '<>' |IS[NOT] NULL
  • DateTime: '=' | '<>' | '<' | '>' | '<=' | '>=' |IS[NOT] NULL
  • Float: '=' | '<>' | '<' | '>' | '<=' | '>=' |IS[NOT] NULL
  • ID: '=' | '<>' | '<' | '>' | '<=' | '>=' |IS[NOT] NULL
  • Integer: '=' | '<>' '<' | '>' | '<=' | '>=' |IS[NOT] NULL
  • Object: '=' | '<>' |IS[NOT] NULL
  • String: '=' | '<>' '<' | '>' | '<=' | '>=' | LIKE |IS[NOT] NULL

フォルダー演算子

INFOLDER 演算子は、指定されたフォルダーに含まれるオブジェクトを照合します。左オペランドには、オブジェクト値プロパティー、または結果が単一のオブジェクト値になる式を指定します。右オペランドには、以下のいずれかの形式のフォルダーを指定します。

  • フォルダー ID。
  • フォルダーのフルパス名。

左オペランドでクラス Folder のオブジェクトが生成される場合、そのフォルダーが、右オペランドで指定されたフォルダーの直接の子のときは、式が TRUE に評価されます。

左オペランドで他の包含可能なクラス (DocumentCustomObject) のオブジェクトが生成される場合、そのオブジェクトが、右オペランドで指定されたフォルダーの参照コンテニーのときは、式が TRUE に評価されます。

以下の例では、/sub1/sub1a フォルダーに含まれるすべてのドキュメントが検索されます。

   SELECT … FROM Document WHERE Document.This INFOLDER '/sub1/sub1a'

INSUBFOLDER 演算子は、同様の方法でフォルダー・サブツリー (そのツリー内の指定されたフォルダーまたは任意のサブフォルダーから任意の深さまで) に含まれるオブジェクトを照合します。 INSUBFOLDER 演算子のオペランドは、INFOLDER と同じです。

以下の例では、/sub1/sub1a フォルダー、または任意のサブフォルダーに含まれるすべてのドキュメントが検索されます。

   SELECT … FROM Document WHERE Document.This INSUBFOLDER '/sub1/sub1a'

INSUBFOLDERFolder.Parent プロパティーにフォルダーの親が設定されたサブフォルダーでのみ使用できます (直接包含)。INSUBFOLDER 演算子は、参照コンテナーによって親にリンクされたサブフォルダーを認識しません (参照コンテナーは、ReferentialContainmentRelationship.Tail プロパティーがサブフォルダーに等しく、ReferentialContainmentRelationship.Head プロパティーが親フォルダーに等しい ReferentialContainmentRelationship オブジェクトです)。

注: INSUBFOLDER 演算子を使用すると、照会が複雑になり、その実行時間が長くなる場合があります。多数のフォルダーおよびコンテニーに対して INSUBFOLDER 検索を使用するソリューションをデプロイする前に、この検索が大規模なデータベースでうまく機能しており、適切に最適化されたことを確認してください。データベースですべての照会を適切に最適化することはできません。

IsClass 関数

IsClass 関数は、特定のクラスを検索するフィルターとして機能します。アドホック照会では、次のフォーマットが使用されます。

IsClass(<class_alias>,<class_id>)

最初のパラメーターには、フィルターを適用する FROM クラスの別名を指定します。2 番目のパラメーターには、一致する必要のあるクラスを指定します。class_id には、シンボル名または GUID を使用できます。

FilterExpression プロパティーでは、IsClass 演算子は IsClass(Source,<class_id>) のように構成する必要があります。ここで「Source」はソース・オブジェクトを指します。

IsClass 関数は、基本クラス WITH INCLUDESUBCLASSES を照会するときに便利です。この結果には、基本クラスの 1 つ以上の特定のサブクラスに属するオブジェクトが含まれる必要があります。

以下の例では、DocSubclass1 または DocSubclass2 のドキュメントが検索されますが、クラス Document、またはその他のすべてのサブクラスのドキュメントは除外されます。

   SELECT … FROM Document D WHERE IsClass(D,DocSubclass1) OR IsClass(D,DocSubclass2)
  

IsOfClass 関数

IsOfClass 関数は、特定のクラスおよびそのサブクラスを検索するフィルターとして機能します。 アドホック照会では、次のフォーマットが使用されます。

IsOfClass(<class_alias>,<class_id>)

最初のパラメーターには、フィルターを適用する FROM クラスの別名を指定します。2 番目のパラメーターには、一致する必要のあるクラスを指定します。class_id には、シンボル名または GUID を使用できます。

FilterExpression プロパティーでは、IsOfClass 演算子は IsOfClass(Source,<class_id>) のように構成する必要があります。ここで「Source」はソース・オブジェクトを指します。

次のアドホック照会の例は、PayrollChange または TaxForm のいずれかのアカウンティング・レコードを見つけるもので、PayrollChange または TaxForm のサブクラスもすべて含めます。:

SELECT … FROM AccountingRecords a WHERE IsOfClass(a, PayrollChange) OR IsOfClass(a, TaxForm)

次のアドホック照会の例は、E メール・クラスまたはそのサブクラスのインスタンスではない通信の記録を見つけます。

SELECT … FROM Correspondence c WHERE NOT(IsOfClass(c, Email))

Include/Exclude Subclasses 関数

INCLUDESUBCLASSES および EXCLUDESUBCLASSES 関数は、結果を特定のクラスまたはクラス階層に制限するために IsClass とともに使用されます。デフォルトは、INCLUDESUBCLASSES です。以下の SQL 照会例は、これらの関数を示しています。

以下の両方の照会では、DocumentTitle が「MyDoc」であるドキュメントおよびそのサブクラスが検索されます。

   SELECT … FROM Document WHERE DocumentTitle = 'MyDoc'
   SELECT … FROM Document WITH INCLUDESUBCLASSES WHERE DocumentTitle = 'MyDoc'

以下の両方の照会では、DocumentTitle が「MyDoc」であるドキュメントが検索されます。Document クラスのサブクラス内の一致項目は戻されません。

   SELECT … FROM Document d WHERE DocumentTitle = 'MyDoc' AND ISCLASS (d, Document)
   SELECT … FROM Document WITH EXCLUDESUBCLASSES WHERE DocumentTitle = 'MyDoc'

以下の照会では、「Form Data」オブジェクトと「Form Policy」オブジェクト (両方とも Document のサブクラス) が検索されます。

SELECT … FROM Document d  WHERE … AND (ISCLASS (d, [Form Data]) OR ISCLASS (d, [Form Policy]))

次の照会は、Document のすべてのサブクラス (Document クラス自体は除く) のオブジェクトを検索するために使用されます。(INCLUDESUBCLASSES がデフォルトで使用されます。)

SELECT … FROM Document d WHERE … AND NOT (ISCLASS (d, Document))

ALLACCESSGRANTED 関数

ALLACCESSGRANTED は、ユーザーに付与されている指定のアクセス権で照会をフィルターするオプションの関数です。サーバーは、照会ユーザーが少なくとも ALLACCESSGRANTED 引数で指定されているアクセス権を持っている対象のオブジェクトのみを返します。

この関数の構文は次のとおりです。

ALLACCESSGRANTED(x)

ここで、x は、ビット・マスクであり、0 (ゼロ) から Integer.Max_Value までの整数です。照会ユーザーは少なくとも、このマスク内のすべてのビットを持っている必要があります。

例えば、検索で返されるオブジェクトに対してユーザーに付与されているアクセス権が少なくとも CHANGE_STATE および DELETE であることが必要な照会では、アクセス・マスクとして 66560 を指定します (CHANGE_STATE 値 1024 と DELETE 値 65536 を加算した合計)。クライアントは、個々のアクセス権の値の合計を手動で計算する必要があります。

SELECT … FROM myClass WITH ALLACCESSGRANTED(66560) WHERE …

AccessRight 定数の整数値を判別するには、「定数フィールドの値 (Constant Field Values)」を参照してください。

ALLACCESSGRANTED は、Include/Exclude Subclasses 関数と一緒に使用できます。その際、それぞれの関数をコンマで区切ります。 次に例を示します。

SELECT … FROM myClass WITH EXCLUDESUBCLASSES, ALLACCESSGRANTED(128)

ALLACCESSGRANTED は、検索のそれぞれの FROM クラスに適用できます。また、結合されたクラスに適用できます。WITH 従属節に指定できる ALLACCESSGRANTED は 1 つだけです。 次に例を示します。

SELECT … FROM myClass d WITH EXCLUDESUBCLASSES, ALLACCESSGRANTED(128)
     INNER JOIN myOtherClass e WITH EXCLUDESUBCLASSES, ALLACCESSGRANTED(129)
     ON d.This = e.This

制限

  • ALLACCESSGRANTED は、副照会では指定できません。
  • ALLACCESSGRANTED を (FROM 節の中の) ContentSearch クラスに適用することはできません。ContentSearch に結合されたクラスには適用できます。

    以下の例は、ContentSearch クラスでの ALLACCESSGRANTED の正しい使用法と誤った使用法を示しています。

    正しい例

    SELECT … FROM Document d WITH ALLACCESSGRANTED INNER JOIN ContentSearch WHERE …
                

    正しくない例

    SELECT … FROM Document d INNER JOIN ContentSearch WITH ALLACCESSGRANTED WHERE …
    SELECT … FROM Document d WITH ALLACCESSGRANTED INNER JOIN ContentSearch WITH ALLACCESSGRANTED WHERE …

Object 関数

OBJECT 関数を使用すると、オブジェクト定数の結果を作成し、それをオブジェクト値プロパティーまたは式と比較できます。OBJECT 関数には、2 つの論理的な形式があります。1 つ目の形式は、型 GUID (Id) の引数を取ります。これは定数または GUID 値プロパティーになります。2 つ目の形式は、以下に挙げる文字列の引数のいずれかを取ります。

  • Folder オブジェクトの場合は、フォルダーのフルパス名。
  • データ型 ID のプロパティーの <property_spec>。OBJECT 関数を使用すると、オブジェクトと ID とを比較することができます。これは特に、結合で役立ちます。

例えば、以下のステートメントでは、/root/sub1/sub1a フォルダーの直接のサブフォルダーがすべて検索されます。

   SELECT … FROM Folder WHERE Parent = OBJECT('/root/sub1/sub1a')
注: OBJECT 関数で GUID を引用符付き文字列として指定してもエラーにはなりませんが、この方法は推奨されていません。

SecurityPrincipal 関数

SecurityPrincipal 関数は、ユーザーまたはグループのセキュリティー・プリンシパル ID との比較を行う検索照会を作成する手段を提供します。この関数は、Object 関数と同様に動作しますが、SecurityPrincipal オブジェクト (User または Group オブジェクト) のみに使用されます。アドホック照会および FilterExpression プロパティーでは、次のフォーマットが使用されます。

SecurityPrincipal(<security_principal_id>)

この関数では、セキュリティー・プリンシパル文字列 ID パラメーター、または Factory.SecurityPrincipal.fetchInstance() メソッドによってサポートされる任意のパラメーターを使用します。以下の例では、特定のユーザーによって作成されたすべてのドキュメントが検索されます。

   SELECT … FROM Document WHERE Approver = SecurityPrincipal('S-1-2-567-8910111213') 

CurrentUser 関数

CurrentUser 関数は、現在ログインしているユーザーとの比較を行う検索照会を作成する手段を提供します。アドホック照会および FilterExpression プロパティーでは、次のフォーマットが使用されます。

CurrentUser()

この関数ではパラメーターを使用しません。以下の例では、現行ユーザーによって作成されたすべてのドキュメントが検索されます。

   SELECT … FROM Document WHERE Approver = CurrentUser() 

オブジェクトの比較

<comparison_predicate> を使用して 2 つのオブジェクト値プロパティーを比較する場合、比較されるのは、コンテンツではなく、オブジェクトの ID です。このため、オブジェクトの比較は、ID の比較と同じくらい高速に実行されます。

文字列プロパティーに対するパターン・マッチング照会

LIKE 演算子を使用すると、単値および多値の文字列プロパティーに対して、パターン・マッチング照会 (ワイルドカード照会とも呼ばれる) を実行できます。以下の例は、文字列プロパティーに対するワイルドカード照会を示しています。

WHERE DocumentTitle LIKE 'hello%'

ワイルドカード照会は、以下の例のように、多値文字列プロパティーに対して実行することもできます。

   WHERE mv_string_prop LIKE 'he%'

ここで、mv_string_prop はカーディナリティー LIST です。

多値プロパティーを他の照会操作の左オペランドとして使用することはできません。次の例の照会を実行すると、失敗します。

   WHERE mv_string_prop = 'abc'

IN 演算子

IN 演算子では、以下の形式が使用されます。特に断りのない限り、すべての形式が、アドホック照会と FilterExpression プロパティーの両方に適用されます。

  • value IN listproperty

    ここで、「value」は、プロパティー名または定数 (<property_spec> | <literal>)、listproperty は、カーディナリティー LIST のプロパティーのプロパティー名 (<property_spec>) です。この形式は、カーディナリティー LIST のプロパティーを検索する場合に使用されます。リストの値が「value」に等しい場合は、式が true になります。「value = listproperty」を使用して、タイプ LIST のプロパティーと値とを比較することはできません。IN 演算子を使用する必要があります。

    注: 2 つ以上の複数値プロパティー条件を含む照会の場合、OR 節の連続する個所で IN 演算子を使用しないでください。詳細については、「複数値プロパティーを含む照会のための INTERSECTS 演算子の使用」を参照してください。
  • value IN (constant1, constant2, constant3,…)

    ここで、constant1constant2constant3 は、定数 (<literal>) です。この形式は、「value」がリストの定数のいずれかと等しいかどうかを判別する場合に使用されます。複数のアイテムを小括弧で囲むときは、各アイテムが定数でなければなりません。

  • value IN (SELECT someproperty FROM …)

    FilterExpression プロパティーには適用されません。

    この形式は、「value」がサブクエリーで戻された結果のいずれかであるかどうかを確認する場合に使用されます。サブクエリーで選択するプロパティーは、1 つだけにする必要があります。

  • <object_exp> IN <enum_property>

    FilterExpression プロパティーのみに適用されます。

    例えば、下記のスイープ・ジョブまたはスイープ・ポリシーのフィルター式は、{0F1E2D3C-4B5A-6978-8796-A5B4C3D2E1F0} と等しい ID を指定されてフォルダーにファイリングされたすべてのドキュメントと一致します。

    Object({0F1E2D3C-4B5A-6978-8796-A5B4C3D2E1F0}) IN FoldersFiledIn

SATISFIES 演算子

SATISFIES 演算子を使用して、検索されたオブジェクトの従属への存在制約を表すことができます。SATISFIES 演算子では、次のフォーマットが使用されます。

<dependent list prop> [AS <class_alias>] SATISFIES ( <predicate> )

リストのいずれかのメンバーが述部を満たす場合、これは TRUE に評価されます。述部には、WHERE 式で有効なものであれば何でも含めることができます。述部の非修飾プロパティー名はリスト・プロパティーの必須クラスまたはそのサブクラスに照らして解決されるからです (暗黙的にサブクラスを含める動作)。修飾名を使用して相関副照会を実行することができます。

例:

SELECT … FROM Document WHERE ExternalReplicaIdentities SATISFIES (ExternalRepository = Object({ba950301-afc2-4fd3-bbb9-dc91663cc15a}))

アドホック照会では、次のルールが適用されます。

  • 式の左側で指定されるプロパティーは、PropertyDescription の IsSearchable プロパティーの値が TRUE であるオブジェクト・プロパティーの従属リストでなければなりません。これには、オブジェクト・プロパティーの従属リストのほとんどが含まれますが、ContentElements および Permissions (これらのストレージ表現では照会が可能ではない) は除外されます。 (オブジェクト・プロパティーのリストは、データ型が Object で、カーディナリティーが List です。オブジェクト・プロパティーのすべてのリストは、システムが定義します。カスタム・リスト・プロパティーに使用できるのは、Object 以外のデータ型のみです。)
  • 右側の述部には、永続的な従属オブジェクト・プロパティーのみを記載することができます。それは、PropertyDescriptions オブジェクトの IsSearchable プロパティーの値が TRUE であることによって表されます。

FilterExpression プロパティーで SATISFIES を使用する場合、これらのルールには例外があります。

SATISFIES 式をネストすることにより、従属オブジェクトに従属するオブジェクト (例えば、ClassDefinition の PropertyDefinition の ExternalPropertyAliases) に対する制約を指定できます。

IsClass 節で使用するため、またはネストされた SATISFIES 節の使用時にあいまいさをなくすために、オプションの AS 節を使用して、暗黙的に照会された必須クラスに別名を指定できます。

例:

SELECT … FROM ClassDefinition WHERE PropertyDefinitions AS pd SATISFIES 
  (IsClass(pd,PropertyDefinitionString))

FilterExpression の例外

SATISFIES は、アドホック照会と同じ構文の FilterExpression プロパティーでサポートされますが、以下の例外があります。

  • リスト・プロパティーと従属クラスのプロパティーへの永続性の制限は適用されないため、任意のリスト・プロパティー (ContentElements および Permissions を含む) および従属クラスの任意のプロパティー (永続するかどうかに関わりなく) を式で指定できます
  • singleton または列挙型プロパティーを左側に指定することができます

例:

// Annotation オブジェクトに適用
AnnotatedObject SATISFIES (VersionStatus=3)

// Document に適用
FoldersFiledIn SATISIFES (This = Object({9906D34A-DBE2-415E-B807-6B4CCA65B893}))

INTERSECTS 演算子

INTERSECTS 演算子を使用すると、リスト・プロパティーに、値の集合のいずれかのメンバーが含まれているか、または別のリスト・プロパティーと共通であるか副照会の戻り値と共通である値が含まれているかどうかをテストすることができます。

注: 2 つ以上の複数値プロパティー条件を含む照会の場合、OR 節の連続する個所で IN 演算子を使用しないでください。詳細については、「複数値プロパティーを含む照会のための INTERSECTS 演算子の使用」を参照してください。

INTERSECTS 演算子には、次のフォーマットが使用されます。

<リスト 1> INTERSECTS <リスト 2>

この式は、リスト 1 の値の集合と、リスト 2 の値の集合の間の論理積が空でない場合のみ、TRUE に評価されます。すなわち、2 つの集合の間で共通の値が少なくとも 1 つ存在する場合です。これらのリストはデータ型が同じでなければなりません。

INTERSECTS 演算子は、右側または左側のいずれかで定数リストとリスト・プロパティー名をサポートし、両側でリスト・プロパティーをサポートします。アドホック照会の場合のみ、リスト式 (sub-SELECT) もサポートされます。

例:

SELECT … FROM Document WHERE ListPropertyString INTERSECTS ('value1', 'value2', 'value3')
SELECT … FROM Document WHERE ListPropertyString1 INTERSECTS ListPropertyString2

次の形式は、アドホック照会のみでサポートされます (FilterExpression プロパティーではサポートされません)。

SELECT … FROM Document WHERE ListPropertyString INTERSECTS (SELECT documentTitle FROM Document …)

IS/IS NOT NULL を使用するリスト・プロパティー

IS NULL または IS NOT NULL 演算子を使用して、リスト・プロパティーに値が含まれているかどうかをテストできます。

例:

次の照会は、ListPropertyString に値が設定されていないドキュメントを返します。

SELECT … FROM Document WHERE ListPropertyString IS NULL

次の照会は、ListPropertyString が値を含むドキュメンテーションを返します。

SELECT … FROM Document WHERE ListPropertyString IS NOT NULL

時間関連の関数

下記のように、Now 関数および TimeSpan 関数は、日時プロパティーを含む式で使用されます。 日時プロパティーは、ユーザー・プロパティーであるか、または DateCreated および DateLastModified などの検索可能なシステム日時プロパティーです。これらの関数は、CmAuditDispositionPolicy オブジェクトの DispositionRule プロパティーで定義されている、存続期間に基づく削除用に監査されるイベントをターゲットとする場合、特に有用です。

次のルールが適用されます。

  • 日時の比較用にサポートされるすべての演算子は、Now および TimeSpan によってサポートされます。
  • これらの関数を同じ式で一緒に使用することができます。
  • 関数では大文字と小文字を区別しません。

Now

Now 関数は、データベースが実行されているコンピューターのオペレーティング・システムから得られたデータベース・システム・タイム・スタンプに基づいて、現在の日時を協定世界時 (UTC) で返します。次のフォーマットが使用されます。

Now()

例:

この照会は、DateProp の値がデータベース・サーバー上の現在の UTC 時刻よりも大きいドキュメントをすべて返します。

SELECT … FROM Document WHERE DateProp > Now()

TimeSpan

TimeSpan 関数では、日時値と日時値の間の期間を評価できます。次のフォーマットが使用されます。

TimeSpan(value, 'units')

ここで

value は、単位に対応する範囲に含まれる任意の正整数です。

units は次のいずれかの値です。
  • Second(s)
  • Minute(s)
  • Hour(s)
  • Day(s)

引数では大文字と小文字を区別しません。

例:

次の照会は、DateProp1 が DateProp2 に 1 時間を加えた値よりも大きいドキュメントをすべて返します。

SELECT … FROM Document WHERE DateProp1 > DateProp2 + TimeSpan(1, 'hour')

次の照会は、DateProp1 から 1 時間を引いた値が、DateProp2 に 71 時間を加えた値よりも大きいドキュメントをすべて返します。

SELECT … FROM Document WHERE DateProp1 - TimeSpan(1,'hour') > DateProp2 + 
TimeSpan(3, 'days') - TimeSpan(1, 'hour')

次の照会は、最近 3 日間に追加されたすべてのドキュメントを返します。

 SELECT … FROM Document WHERE DateCreated > Now() - TimeSpan(3, 'Days')

一般的な制限

以下の制限は、一般的なデータベース・ルールによって課されるものです。

  • TimeSpan 関数は、日時プロパティーまたは Now 関数に加算するか、そこから減算することのみ可能です。
  • TimeSpan 関数は、式の右側のみに置くことができます。
  • TimeSpan 関数は、括弧で囲んで分けられた式の中で使用することはできません。
  • データベース関数または区別付けなどの他の構成体を、選択リストで呼び出すことはできません。

表に、無効な構成体と有効な構成体の例を示します。

無効な構成体 有効な代替構成体
DateProp2 - DateProp1 > TimeSpan(30, 'seconds') DateProp2 > DateProp1 + TimeSpan(30, 'seconds')
DateProp + (TimeSpan(3, 'days') + TimeSpan(1, 'hour')) DateProp + TimeSpan(3, 'days') + TimeSpan(1, 'hour)
DateProp1 > TimeSpan(3, 'days') + DateProp2 DateProp1 > DateProp2 + TimeSpan(3, 'days')

浮動小数点値プロパティーの照会

浮動小数点値プロパティーに対して比較照会を実行するときは、値に小数点を使用する必要があります。以下の例では、浮動小数点値プロパティーである Document.ContentSize を使用して、比較照会の正しくない構文、および正しい構文を説明します。

以下の照会では、エラーが生成されます。

   SELECT … FROM Document WHERE ContentSize > 3

この照会の正しい形式を以下に示します。

   SELECT … FROM Document WHERE ContentSize > 3.0
  

結合

JOIN は、複数のテーブルから結果を照会する場合に使用します。ANSI/ISO SQL99 準拠の結合と同様に動作します。ただし、構文の制限が若干増しており、複数の結合を使用する場合は、小括弧が必要です。例えば、次のステートメントでは 2 つの結合を使用します。

   SELECT … FROM (class1 INNER JOIN class2 ON class1.x = class2.y) INNER JOIN class3 
            ON class3.x = class1.y

「class1 INNER JOIN class2 ON class1.x = class2.y」が小括弧で囲まれていることに注意してください。また、ON 節は、JOIN のクラスの直後に配置する必要があり、なおかつ、次の JOIN 節の前に配置する必要があります。これは、ANSI/ISO SQL99 よりも制限されています。

CBR 照会」も参照してください。

COALESCE 関数

COALESCE 関数は、NULL 値を含むプロパティーの順序付けを制御するために ORDER BY 節で使用できます。この関数は、返される結果セットの順序付けを行うときに、NULL 値を指定のリテラル値に置き換えます。COALESCE 関数が使用されない場合、NULL 値を含むプロパティーは、データベース・ベンダーに応じて最初または最後に順序付けされます。 COALESCE 関数が使用される場合、NULL 値を含むプロパティーは要求どおりに順序付けされます。順序は、COALESCE 関数で NULL が変換されるリテラル値を選択することによって指定します。

このオプションの構文は次のとおりです。

COALESCE (myProperty, value)

ここで

myProperty は、順序付け可能かつ検索可能なプロパティーです。ORDER BY の制限COALESCE 関数に適用されます。

value は、プロパティーと同じデータ型のリテラル値です。

次の検索の例では、NULL を含む結果セットの中の ProcessDate プロパティーごとに、COALESCE 関数は NULL 値を 1900 の日付値に置き換えます。降順が指定されているため、NULL を含む行は最後に返されます。1900 の置換日付は、データベースで考えられる日付の範囲で最も古い日付であるためです。

SELECT … FROM … WHERE … ORDER BY COALESCE(d.ProcessDate, 19000101T000000Z) DESC

次の例に示すように、COALESCE 関数を ORDER BY 節の複数のプロパティーと一緒に使用できます。

SELECT … FROM … WHERE … ORDER BY COALESCE(d.ProcessDate, 19000101T000000Z) DESC, COALESCE(d.ProcessClerk, 'zzUnknown') ASC

COALESCE 関数は、以下の制限およびルールに従います。

  • この関数は、WHERE または Select 節ではサポートされません。
  • プロパティーを、許可されていないリテラル・データ型に合体することはできません。たとえば、浮動小数点または整数のプロパティーを文字列値に、あるいは文字列のプロパティーを整数または浮動小数点の値に合体することはできません。
  • 別個の検索は、値ごとに合体された順序で別個の行を返します。ただし、結果で示される選択値は、合体された値ではなく、元の値です。
  • 合体された GUID には中括弧が必要です (例えば、COALESCE(d.Id, {00000000-0000-0000-0000-000000000000}))。
  • 合体された文字列には単一引用符が必要です (例えば、COALESCE (myProperty, 'myDefaultValue'))。

照会の制限

照会の作成および実行には、一定の制限があります。

長い文字列型の列の操作

カスタム文字列プロパティーを定義して、それを短いデータベース列または長いデータベース列に保管するには、プロパティーの作成時に UsesLongColumn プロパティーを設定します。長い文字列型の列は、LIKEIS NULL、または IS NOT NULL 式の一部として、あるいは CBR に対応した場合は CONTAINS 式の一部として、照会の WHERE 節にのみ指定することができます。

ORDER BY の制限

Boolean、DateTime、Float64、ID、Integer32、および Object 型のプロパティーは、短い String プロパティーとともに ORDER BY 節に指定することができます。Binary プロパティーや長い String プロパティーを使用して照会を並べ替えることはできません。

ORDER BY 節に指定するすべてのプロパティーは、SELECT リストにも (明示的に、または * を使用して) 存在する必要があります。

DISTINCT の制限

DISTINCT 照会は、SELECT のプロパティーがすべて並べ替え可能な場合のみ実行できます。 例えば、プロパティー P1 が並べ替え不可の場合 (UsesLongColumn を持つ Binary 型または String 型)、以下の照会ではエラー・メッセージが生成されます。

SELECT DISTINCT P1 From Object1

照会のオプション

Timelimit

クライアントからサーバーへの RPC の照会の時間制限 (秒)。このオプションの構文は次のとおりです。

OPTIONS (TIMELIMIT N)

ここで、N は、0 (ゼロ) から Integer.Max_Value (ObjectStore.MaxQueryTimeLimit プロパティーで指定した最大値) までの整数です。

このオプションが設定されない場合、有効な制限は、ObjectStore で設定された構成済みの DefaultQueryTimeLimit および MaxQueryTimeLimit プロパティーの最小値です。いずれのプロパティーも設定されていない場合、照会は無制限です。

QueryDatabaseTimeout プロパティーは、アドホック検索中のデータベースに対する JDBC ステートメント実行にのみ適用される追加の時間制限としても設定できます。

詳しくは、「サーバー照会タイムアウトの動作」を参照してください。

Count_Limit

Content Engine がページングされた検索に対して指定された制限まで検索結果の件数をカウントすることを要求します。(このオプションは、ページングされていない検索では無視されます。) 応答として、Content Engine は、以下のいずれかの意味を示す整数を返します。

  • 最小 N 行が検出されました。ここで、N は、COUNT_LIMIT の設定値と等しい値です。つまり、N より多くの行が検出されましたが、Content Engine がカウントしたのは N 行までだけです。
  • 正確に R 行が検出されました。ここで、R は、COUNT_LIMIT の設定値より少ない値です。
  • 結果のカウントはありません。カウントがサーバーで無効にされているためです。

結果のカウントを取得するには、クライアント・アプリケーションは、PageIterator.getTotalCountContent Engine API から呼び出す必要があります。PageIterator は、検索で返されるオブジェクトまたは行を表すオブジェクト・セットから取得できます。

このオプションの構文は次のとおりです。

OPTIONS (COUNT_LIMIT N)

ここで、N は、0 (ゼロ) から Integer.Max_Value (ServerCacheConfiguration.QueryCountMaxSize プロパティーで指定した最大値) までの整数です。このオプションがゼロに設定される場合、Content Engine は、ServerCacheConfiguration.QueryCountDefaultSize プロパティーで設定されている行数をカウントします。

次の例では、検索により、最大 1000 行までの検出されたカウントが返されます。

Select Id, DocumentTitle From Document
Where DocumentTitle LIKE 'Specification%'
OPTIONS (COUNT_LIMIT 1000)

この検索では、QueryCountDefaultSize プロパティーのサーバーのデフォルト値までの検出されたカウントが返されます。

Select Id, DocumentTitle From Document
Where DocumentTitle LIKE 'Specification%'
OPTIONS (COUNT_LIMIT 0)
    

次の表で、SQL COUNT_LIMIT オプション、QueryCountDefaultSize プロパティー、および QueryCountMaxSize プロパティーのさまざまな設定の組み合わせに対する Content Engine の応答の動作を説明します。

COUNT_LIMIT オプションで N = 0 が指定される場合に実行されるカウント
QueryCountDefaultSize QueryCountMaxSize 実行されるカウント
NULL NULL サーバーの制限まで
NULL M 上限は M 行
0 任意の値 なし、N=0 の場合は無効
N NULL N 行
N M N 行、上限は M
任意の値 0 なし、サーバーで無効
COUNT_LIMIT オプションで N > 0 が指定される場合に実行されるカウント
COUNT_LIMIT N 値 QueryCountMaxSize 実行されるカウント
N NULL N 行
N <= M M N 行
N > M M 上限は M 行
任意の値 0 なし、サーバーで無効
ヒント: 最適な COUNT_LIMIT 値は、 ServerCacheConfiguration.QueryPageDefaultSize プロパティーで設定されている照会ページ・サイズを 2 倍した数値の倍数です。

結果のカウントのパフォーマンスを最適化するには、管理者がサーバー上の照会の時間制限設定を検討する必要があります。詳しくは、「DefaultQueryTimeLimit」、「MaxQueryTimeLimit」、および「QueryDatabaseTimeout」を参照してください。

バックグラウンド検索照会構文

バックグラウンド検索の検索式には、任意の有効な Content Engine SQL 式を使用できます。ただし、通常の SQL 式とは異なり、バックグラウンド検索式には、式の内部のパラメーター値を置換できる追加機能があります。各パラメーターにパラメーター名を割り当てる必要があります。SQL 式にパラメーターを追加するには、パラメーター名を 2 つの @ 文字で囲みます。@ 文字をリテラルとして指定するには、2 つの連続する @ 文字を使用します。以下の例は、StartDate という名前のパラメーターを定義する検索式を示しています。
SELECT DocumentTitle FROM Document1 WHERE DateCreated > @StartDate@

選択されたプロパティーと同じ名前のプロパティーがプロパティー・コレクション内にある場合、プロパティーは、検索式内で名前に基づいて直接選択できます。一致する名前がない場合 (または突き合わせを行うことができない場合) は、照会の SELECT リスト内で AS 節を使用して、選択されたプロパティーを、指定された宛先プロパティーにマップできます。選択されたプロパティーのマッピングが見つからない場合、その値は無視されます。バックグラウンド検索は、プロパティーのマッピングのために以下のデータ変換をサポートします。

  • 整数から文字列
  • 浮動小数点から文字列
  • ブールから文字列
  • 日時から文字列
  • ID から文字列
  • オブジェクトから文字列 (文字列形式のオブジェクト ID)
  • バイナリーから文字列 (16 進エンコード)
  • 整数から浮動小数点
  • ブールから整数 (0 = False、1 = True)
  • オブジェクトから ID (オブジェクト ID)

以下のシステム・プロパティーは、CmAbstractSearchResult 結果オブジェクト内で値が設定され、シンボル名に基づいた突き合わせを行うことができません。AS 節を使用してマップする必要があります。

  • BackgroundSearch
  • Creator
  • DateCreated
  • DateLastModified
  • Id
  • LastModifier
  • Owner
  • This
例えば、以下の SQL 照会は、DateCreated プロパティー内で返された値を、DocCreationDate という名前のカスタム・プロパティーにマップします。
SELECT DateCreated AS DocCreationDate, FROM Document1 WHERE …

集約関数と GROUP BY 節

バックグラウンド検索の場合のみ、Content Engine は SQL 集約関数と GROUP BY 節をサポートします。SQL 集約関数は値の集合に対して計算を行い、その計算の結果である単一値を返します。以下の集約関数がサポートされています。

  • COUNT(): 式内のアイテムの数を返します。
  • MAX(): 式内の最大値を返します。
  • MIN(): 式内の最小値を返します。
  • SUM(): 式内の値の合計を返します。
GROUP BY 節は 1 つ以上の集約関数とともに使用され、照会で返された一連の行を列ごとにグループ化します。 次に例を示します。
SELECT Creator as DocCreator,
    COUNT(Id) as DocCount,
    SUM(ContentSize) as DocSize,
    MIN(DateCreated) as DateFirstCreated,
    MAX(DateCreated) as DateLastCreated
FROM Document
GROUP BY DocCreator

バックグラウンド検索について詳しくは、バックグラウンド検索を参照してください。

カスタム検索関数照会構文

カスタム検索関数は、SQL ステートメントの SELECT リストでバックグラウンド検索または一般的な検索に使用できます。カスタム検索関数名の形式は、<namespace>::<name> である必要があります。 この場合、<namespace> と <name> は両方とも、 Content Engine シンボル名規則を順守します。カスタム検索関数名は、他の検索関数名に対して一意である必要があります。例えば、次の SELECT 節のカスタム検索関数は日付値をカレンダー値に変換し、日付型と文字列型の 2 つの入力パラメーターが必要です。カスタム検索関数は、現在の年を含む文字列、または現在の月と年を含む文字列を返します。
SELECT DocumentTitle, Id, SCF::DateConversionFunctionHandler(DateCreated, 'Month') as MonthYear FROM Document

カスタム検索関数について詳しくは、カスタム検索関数を参照してください。

一般的な照会の例

このセクションでは、簡単な SQL ステートメントを使用して各種の情報を取得する例を説明します。

2005 年 4 月 1 日より後に管理者ユーザーが作成したドキュメントを取得して、戻されたドキュメントごとに、指定したプロパティーのリストを戻します。

   SELECT Creator, DateCreated, DocumentTitle FROM Document 
            WHERE (DateCreated >20050401T080000Z AND Creator='Administrator')

ドキュメント・タイトルに文字パターン「Acct」を含むドキュメントを ID (GUID) で取得します。

   SELECT DocumentTitle Id FROM Document WHERE DocumentTitle LIKE '%Acct%'

タイトルに文字「Acct」を含むドキュメントがオブジェクト・ストアに 3 つ含まれている場合、この照会では、以下の形式でドキュメントが戻されます。

AcctDocument      {4E017CB8-4980-4BB2-88E9-248C555445E2}
MyAcctDocument    {01C92932-E840-4FC2-90E8-45E245248CB5}
AcctgStoredSearch {4ECDE7D9-F551-4C53-A109-8D81B1DE8577}

特定の ID を検索するには、特定の GUID を指定するように照会を変更します。

   SELECT DocumentTitle Id FROM Document WHERE Id={4ECDE7D9-F551-4C53-A109-8D81B1DE8577E}
注: 照会に GUID を指定するときには引用符を使用しないでください。

以下の照会は、チェックアウトされたドキュメント (予約状態のドキュメント・バージョン) のうち、「HRManager」ユーザーが作成したもののリストを取得します。

   SELECT Id FROM Document WHERE VersionStatus=3 AND Creator='HRManager'

VersionStatus プロパティーの値を変更すると、この照会を使用して、リリース済み (1)、処理中 (2)、または置換済み (4) のドキュメントを検索できます。

以下の SQL 照会は、特定のフォルダー (この例では、フォルダー /Test) からコンテンツを取得します。このような照会を使用すると、アプリケーションで必要とされるアイテムだけが戻されるように、アイテム数を制限する基準を設定できます。 これに対して Folder.getContainees メソッドは、フォルダー内のすべてのアイテムを返します。返されるアイテムの数に制限はありません。

サブフォルダーを取得します。

   SELECT f.[ObjectType], f.[Id], f.[FolderName], f.[ContainerType], f.[ClassDescription], 
            f.[OIID]  FROM Folder f 
            WHERE (( f.This infolder '/Test')) AND (( [IsHiddenContainer]=false) )) 
            ORDER BY FolderName

ドキュメントを取得します。

   SELECT d.[ObjectType], d.[Id], d.[LastModifier], d.[DocumentTitle], d.[DateLastModified], d.[ContentSize], 
            d.[MajorVersionNumber], d.[ClassDescription], FROM Document d 
            WHERE (( (d.This infolder '/Test') ) AND (( [MimeType] IS NULL) 
                OR ([MimeType] <> 'application/x-filenet-search') ) )) 
            ORDER BY DocumentTitle

以下のサンプル照会は、データベース内のすべての HTML ドキュメントのうち、コンテンツのサイズが 10,000 バイトを超えており、なおかつ 2005 年 12 月 12 日以降に変更されたものを検索して、その ID を戻します。

   SELECT Id FROM Document d WHERE ([MimeType] = 'text/html' AND [ContentSize] > 10000.0) 
            AND [DateLastModified] > 20051201T000000Z


最終更新日: 2015 年 10 月
query_sql_syntax_rel_queries.htm

© Copyright IBM Corp. 2015.