因此,我正在实现一个自动完成的搜索栏,并使用DB2将其与RPG和Assembly系统集成。我尝试了这两种技术来从文件中搜索不同的IDNumb,在进行搜索之前,输入至少需要3个数字。我尝试过以下几种:
Regular expression example: ^[0-9]*$
SQL
SELECT DISTINCT [IDNUM] FROM FILE WHERE [iNPUT] > 3;
不幸的是,这两种技术都不准确。如果有人能就如何让它更健壮提出一些建议,我会很高兴的。RPG解决方案也很受欢迎,但SQL解决方案会很棒。
您可以通过以下方式检查RPG中的搜索字符串是否为数字:
MONITOR
EVAL FIELD = %INT(SEARCH_STR)
ON-ERROR
// error: not a number
ENDMON
其中SEARCH_STR
是搜索字符串,FIELD
定义为数字。
关于查询,如果服务器是DB2,这应该可以工作:
SELECT DISTINCT(IDNUM)
FROM FILE
WHERE CHARACTER_LENGTH(SEARCH_STR) >= 3 AND
IDNUM LIKE '%SEARCH_STR%'
使用搜索字符串更改SEARCH_STR
。
但我建议通过代码而不是SQL来检查搜索字符串的长度,因为这很简单。