9.21 修改 SQL 语句中的过滤条件

 

修改 SQL 语句中的过滤条件。
下面的 SQL 语句用于选出销售部门收入大于 10000 的员工,将过滤条件中的部门修改为研发部门。

select 
	EID,NAME,SURNAME,DEPT,SALARY
from
	Employee
where
	DEPT='Sales' and SALARY>10000

使用函数 s.sqlparse(part) ,拆分 SQL 成为各个部分构成的序列,有 part 参数理解为用 part 替换 SQL 的相应部分返回新 SQL。 选项 @w 表示 where 语句,@s 表示 select 语句。

脚本:

A
1 select EID,NAME,SURNAME,DEPT,SALARY from Employee where DEPT=‘Sales’ and SALARY>10000
2 =A1.sqlparse@w()
3 =A2.split@t(“and”)
4 =A3.pselect(like(~,“DEPT*”))
5 =A3(A4)=“DEPT=‘R&D’”
6 =A3.concat("and")
7 =A1.sqlparse@w(A6)

A1 定义 SQL 常量
A2 使用 s.sqlparse() 函数的 @w 选项,取出 where 条件
A3 使用 s.split() 函数拆分 where 条件,选项 @t 表示每段进行 trim
A4 选出部门的条件
A5 将部门条件替换为选出研发部门
A6 将条件序列用 and 连接
A7 使用 s.sqlparse(part) 函数的 @w 选项,替换 where 条件

运行结果:

Value
select EID,NAME,SURNAME,DEPT,SALARY from Employee where DEPT=‘R&D’ and SALARY>10000