您的位置:首页 > 其它

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

2014-12-17 00:29 260 查看

查找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\1\
76\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特别适合用于对数据库结果记录集进行进一步的查找
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  newlisp