java - 如何使用java正则表达式将查询列表sql转换为查询计数sql

标签 java sql regex

我想删除 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

<小时/> 如何使用 java regex 做到这一点?

select uid, uname from user order by
hibernate可以将其转化为页面查询select uid, uname from user order by limit xxxx自动执行,我们可以得到一个列表。

那么如果我们执行select count(*) from user ,我们将获得用户数量。

pageNo , pageSize是我自己设置的,pageNumrecord_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/

相关文章:

java - 有没有办法在 .jar 中包含 VM 参数?

sql - 添加 LEFT JOIN 后损坏的计数 (*)

sql - 如何在 PostgreSQL 中以日期格式本身添加 AM 或 PM?

regex - 在eclipse中查找并​​替换 "go to nth character position"

java - 我如何在 Java 中指定我自己的 Rhino 上下文?

Java/Eclipse 分析 : Is there a way to show the number of method calls to each method?

java - 本地主机上的服务器 Tomcat v8.5 服务器无法在 Eclipse 中启动

sql - 外连接/子查询遇到问题

java - 具有可变组数的正则表达式?

javascript - 正则表达式 javascript 的数字格式