在过滤的结果集中根据情况决定是否再过滤
DB2 数据库某表如下:
ID |
ABBREV |
1 |
A |
1 |
B |
2 |
B |
2 |
C |
3 |
A |
3 |
A |
3 |
C |
现在要初步过滤出 ID 等于指定参数的记录,并根据结果集的 ABBREV 字段是否含有”A”做进一步的处理,含有”A”时,进一步过滤出只含有”A”的记录并返回;不含”A”时,直接返回初步过滤结果。
比如参数等于 1 时,应当返回:
ID |
ABBREV |
1 |
A |
参数等于 2 时,返回:
ID |
ABBREV |
2 |
B |
2 |
C |
参数等于 3 时,返回:
ID |
ABBREV |
3 |
A |
3 |
A |
编写SPL代码
A |
|
1 |
=db2.query("select * from tb where ID=?",argID) |
2 |
=if((t=A1.select(ABBREV=="A"))==[],A1,t) |
A1:通过 JDBC 查询数据库,初步过滤出 ID 等于指定参数的记录.
A2:进一步过滤 ABBREV 等于 "A" 的记录,如果结果为空集,则返回 A1;如果结果非空集,则返回进一步过滤的结果。
问题来源:https://stackoverflow.com/questions/78371930/db2-filter-sql-for-condition
英文版 https://c.scudata.com/article/1733392249977