我需要像写一个方法(java)来转换任意SQL字符串
select xxx,xxx,xxx
from xxx
where xxxxx
-- or
select *
from xxx
where xxxxx
转换为计数sql字符串,如:
select count(*) as total
from xxx
where xxxxx
我在考虑用count(*) as total
替换select
和from
之间的任何内容,这种方法是否存在一些潜在的问题?我不需要处理每一种情况,但我想知道这种方法在哪些情况下可能会有问题,我是否可以忽略它们,或者您是否会用其他方法来做。
我无法使用此嵌套解决方案
select count(*)
from ( original query )
因为数据库分片限制。
1条答案
按热度按时间wztqucjr1#
我们可以尝试用正则表达式替换
SELECT
子句,假设查询的每一部分都在单独的行上,我们可以尝试:这将打印:
正则表达式模式
\bselect.*
将匹配select
关键字,直到该行的末尾(默认情况下,.*
不会跨换行符匹配),然后我们用所需的选择计数替换。