9.15 在拆分字符串的同时解析
在拆分字符串时,将字串解析为合适类型的数值。
有课程表和选课表,查询有哪些课没有学生选修。其中选课表可以多选,用逗号分隔,部分数据如下:
Course:
ID | NAME | TEACHERID |
---|---|---|
1 | Environmental protection and … | 5 |
2 | Mental health of College Students | 1 |
3 | Computer language Matlab | 8 |
4 | Electromechanical basic practice | 7 |
5 | Introduction to modern life science | 3 |
6 | Modern wireless communication system | 14 |
… | … | … |
SelectCourse:
ID | STUDENTID | COURSE |
---|---|---|
1 | 59 | 2,7 |
2 | 43 | 1,8 |
3 | 52 | 2,7,10 |
4 | 44 | 1,10 |
5 | 37 | 5,6 |
6 | 57 | 3 |
… | … | … |
使用函数 s.split() 的 @p 选项,拆分后将成员解析成相应的数据类型。
脚本:
A | |
---|---|
1 | =connect(“db”) |
2 | =A1.query(“select * from Course”) |
3 | =A1.query@x(“select * from SelectCourse”) |
4 | =A3.union(COURSE.split@cp()) |
5 | =A2.(ID) |
6 | =A2(A5.pos([A5,A4].diff())) |
A1 连接数据库
A2 读取课程表
A3 读取学生选课表
A4 使用 split 函数的 @p 和 @c 选项,将选课表中的课程按逗号拆分后解析成整数,使用 union() 函数对课程序列求交列
A5 所有课程的序号
A6 使用 diff() 函数求课程表和选课表的课程序号的差列,即没有学生选择的课程,在 A5 中定位后,从 A2 中选出。
运行结果:
ID | NAME | TEACHERID |
---|---|---|
1 | Fundamentals of economic management | 21 |