首页 > 代码库 > 用find/find-all match方式查找list元素

用find/find-all match方式查找list元素

查找list中的一个子list

假定数据库里面有若干行记录,newlisp mysql模块返回结果是用一个list表示这个若干行记录,然后每个元素都是一个list,里面包含一行记录,每行记录list里面有包含了若干list,每个list都有两个元素:字段名和字段值。

现在我们可以用find方式来进行模式查找

> (find (list (list "issue_id" 1773) ‘*) ‘((("issue_id" 1773) ("custom_field_id" 7) ("type" "IssueCustomField") ("name" "\229\143\145\231\142\176\230\151\165\230\156\159") ("default_value" "") ("value" "2014-06-27"))) match) 
0

这个例子就是查找这些行里面第一个字段名为issued_id,值为1773的行,由于用的是find,所以查找的是第一行。

find返回0, 用$0可以查看结果。

> $0
(("issue_id" 1773) ("custom_field_id" 7) ("type" "IssueCustomField") ("name" "发现日期")
 ("default_value" "")
 ("value" "2014-06-27"))

查找list中的若干子list

用find-all可以找到所有符合模式的记录,

(set ‘r (find-all (list (list "issue_id" issue-id) ‘*) issue-customized-values))

和find差不多,只是注意结果是直接返回的。因此不要用$0查看结果。

不过$count可以查看有多少记录被找到。


find/find-all match特别适合用于对数据库结果记录集进行进一步的查找

用find/find-all match方式查找list元素