在FOREACH命令中遇到CONTAINS参数问题

时间:2012-08-23 16:25:44

标签: progress-4gl openedge

我有一个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.

2 个答案:

答案 0 :(得分:0)

单词索引适用于完整单词,而不适用于部分单词。所以在你的代码中,如果你在PartDescription的记录中有“NUCLEARISSAFE”,它将找不到文本“NUCLEAR”。

请注意,如果您有“NUCLEAR-IS-SAFE”,它会起作用,因为场景背后的进展是单独索引单词。

你可以使用index关键字,但遗憾的是没有索引,所以会锁定超过必要的记录:

FOR EACH JobHead WHERE 
         INDEX(JobHead.PartDescription, "NUCLEAR") GT 0 EXCLUSIVE-LOCK.

答案 1 :(得分:0)

正是CONTAINS运算符正在使用分词规则。根据您使用的代码页,这些可能会有所不同。请注意,对于UTF-8,它们不是开箱即用的,因此除非您定义它,否则您将收到错误。

此知识库文章介绍了如何查看哪些分词规则 KB article