查找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特别适合用于对数据库结果记录集进行进一步的查找
时间: 2024-10-09 17:23:43