sqlparse()

阅读(531) 标签: sql语句, 拆分, 序列,

描述:

SQL语句拆分为序列。

语法:

sql.sqlparse(part)

备注:

按照select语句、from语句(包含join部分)where条件、group by语句、having语句、order by语句顺序将sql拆分成序列,拆分后的语法参数作为序列成员,结果返回序列。

part参数时,将part替换源SQL中的对应语法参数,结果返回新SQL

参数:

sql

sql语句

part

sql串,替换到源sql中,需要配合选项使用。

选项:

@s

select语句

@f

from语句,包含join部分

@w

where条件

@g

group by语句

@h

having语句

@o

order by语句

@a

多个项目时再次拆成序列,wherehaving条件中根据AND分隔

返回值:

序列或SQL语句

示例:

 

A

 

1

select emp.EID,emp.NAME,emp.BIRTHDAY,emp.SALARY,dep.DEPT,dep.MANAGER

from EMPLOYEE emp

left join DEPARTMENT dep

on emp.DEPT=dep.DEPT

where emp.EID<100 and  dep.DEPT='R&D'

order by  emp.SALARY ,emp.EID

 

2

=A1.sqlparse()

SQL语句的各个语法内容拆分为序列成员,默认返回语法内容分别为select语句、from语句、where条件、group by语句、having语句、order by语句,其中SQL语句中不存在的语法则返回null

3

=A1.sqlparse@s()

拆分SQL语句后返回select语法内容

4

=A1.sqlparse@f()

拆分SQL语句后返回from语法内容

5

=A1.sqlparse@w()

拆分SQL语句后返回where条件

6

=A1.sqlparse@o()

拆分SQL语句后返回order by语法内容

7

=A1.sqlparse@a()

拆分SQL语句,当某个语法部分包含多个项目时,继续拆分。

8

SELECT  STUDENTID,sum(SCORE)  FROM SCORES group by studentid  having sum(score)>460

 

9

=A8.sqlparse@g()

拆分SQL语句后返回group by语法内容

10

=A8.sqlparse@h()

拆分SQL语句后返回having语法内容

11

select * from dept

 

12

=A11.sqlparse()

13

=A11.sqlparse@s("deptid")

当有part参数时,替换对应部分的语法内容,此处将select语句内容由“*”改为deptid

14

=A11.sqlparse@f("sales")

当有part参数时,替换对应部分的语法内容,此处将select语句内容由dept改为sales

15

select  EID,NAME,GENDER  from ( select * from EMPLOYEE where salary>10000)

使用from子查询的sql

16

=A15.sqlparse()

17

SELECT P.LastName, P.FirstName, O.OrderNo

FROM Persons P

INNER JOIN Orders O

ON P.Id_P = O.Id_P

ORDER BY P.LastName

 

18

=A17.sqlparse()

From语法内容中包含Join部分