0

JobHead というテーブルがあり、そのテーブルの PartDescription フィールドに Word-Index を作成します (下のプログラムを参照)。PartDescription フィールドに NUCLEAR という単語が含まれる求人を探しています。何も取得できません。何が間違っていますか?

DO:                      
OUTPUT TO VALUE("c:\Nuclear.txt").

    FOR EACH JobHead WHERE 
        JobHead.PartDescription CONTAINS "NUCLEAR" EXCLUSIVE-LOCK.

        DISPLAY JobHead.JobNum.
    END.

OUTPUT CLOSE.
END.
4

2 に答える 2

0

単語インデックスは、部分的な単語ではなく、完全な単語で機能します。したがって、PartDescriptionのレコードに「NUCLEARISSAFE」が含まれている場合、コード内で「NUCLEAR」というテキストは見つかりません。

「NUCLEAR-IS-SAFE」を使用している場合は、舞台裏で単語のインデックスを個別に作成しているため、機能することに注意してください。

indexキーワードを使用することもできますが、残念ながらインデックスに登録されていないため、必要以上に多くのレコードがロックされます。

FOR EACH JobHead WHERE 
         INDEX(JobHead.PartDescription, "NUCLEAR") GT 0 EXCLUSIVE-LOCK.
于 2012-08-27T23:23:22.757 に答える
0

まさに、CONTAINS 演算子はワード ブレーク ルールを使用しています。使用しているコード ページによって、これらは異なる場合があります。UTF-8 の場合、デフォルトでは定義されていないため、定義しないとエラーが発生することに注意してください。

この KB記事では、どのワード ブレーク ルールが適用されているかを確認する方法について説明します。

于 2012-08-28T04:51:05.947 に答える