如何把SQL语句中SELECT 和 FROM之间的部分换成count(*)

假设有一个sql语句:SELECT id, name, (select 1+2 from dual) FROM mytable where id > 5.
我想将SELECT和FROM(都是大写)之间的部分替换成 count(*) 该怎么做啊。用正则表达式怎么做呢?
我想得到的sql语句是
SELECT count(*) FROM mytable where id > 5
最新回答
最初

2025-03-01 06:42:02

String s = "SELECT e.*,d.dname FROM emp e LEFT JOIN dept d ON d.did=e.did WHERE 1=1";
String regex = ".*(FROM.*)$";
String result = s.replaceAll(regex, "SELECT count(*) $1");
System.out.println(result);
.表示任意字符,*表示0到任意多个,()中表示一组,前面的任意多个字符替换为SELECT count(*),后面$1表示第一组不变,也就是FROM及其后面任意多个字符维持原有。
思慕

2025-03-01 11:14:04

查找(正则表达式):
(?<=SELECT).*?(?=FROM)
替换为(字符串):
count(*)
替换为(正则表达式):
count\(\*\)
抱着嫦娥烤玉兔

2025-03-01 06:04:05

Match m= Regex.match(“SELECT id, name, (select 1+2 from dual) FROM mytable where id > 5.
”,“SELECT .+ FROM”);
m.value;就是你要匹配的字段了
半坏街灯

2025-03-01 10:30:28

你那样写没有意义 无论是count(id)还是count(name)结果都是一样的数字,
陌生的挚爱

2025-03-01 01:07:50

SELECT count(id) FROM mytable where id > 5