我想删除 order by
在sql中,并转换
select a,b,c from
进入select count(*) from
select uid, uname from user order by uid
=>
select count(*) from user
select uid, (select depname from department t01 where t02.depid = t01.depid ) from user t02 order by uid
=>
select count(*) from user t02
select uid, '('||uname||')' from user
=>
select count(*) from user
select uid from (select uid,rownum as row_num from user order by uid) where row_num < 10 order by uname
=>
select count(*) from (select uid,rownum as row_num from user order by uid) where row_num < 10
select uid, uname from user order by
hibernate可以将其转化为页面查询select uid, uname from user order by limit xxxx
自动执行,我们可以得到一个列表。
那么如果我们执行select count(*) from user
,我们将获得用户数量。
pageNo
, pageSize
是我自己设置的,pageNum
是 record_count/pageSize
。我希望得到table/grid
的所有数据通过一条sql,但我不知道如何将查询列表sql转换为查询计数sql。
最佳答案
假设 order by 位于最后,您可以使用
query = query
.replaceFirst("(?is)\\sorder\\s+by\\s.*$","");
.replaceFirst("(?is)^\\s*select\\s.*?from\\s","select count(*) from ");
但是,这不太合适。分析 SQL 查询需要语法分析,这超出了正则表达式的范围。我给出的示例将失败
select ... from ... where title = 'I want to order by my cat'
这是一个简单的计数器示例,但您可以想象更复杂的 SQL 查询。
关于java - 如何使用java正则表达式将查询列表sql转换为查询计数sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29098988/