Java 将参数值替换为?在sql查询中
假设我有这样一个查询:Java 将参数值替换为?在sql查询中,java,sql,regex,Java,Sql,Regex,假设我有这样一个查询: INSERT INTO users (lastname, age, city, email, firstname) VALUES ('Doe',30,'Austin', 'jon@ds.com', 'Jon') INSERT INTO users (lastname, age, city, email, firstname) VALUES (?,?,?,?,?) 我想用问号替换此查询中传递的所有参数,得到如下结果: INSERT INTO users (lastnam
INSERT INTO users (lastname, age, city, email, firstname) VALUES ('Doe',30,'Austin', 'jon@ds.com', 'Jon')
INSERT INTO users (lastname, age, city, email, firstname) VALUES (?,?,?,?,?)
我想用问号替换此查询中传递的所有参数,得到如下结果:
INSERT INTO users (lastname, age, city, email, firstname) VALUES ('Doe',30,'Austin', 'jon@ds.com', 'Jon')
INSERT INTO users (lastname, age, city, email, firstname) VALUES (?,?,?,?,?)
请注意,这只是一个示例,查询可能要复杂得多。我只想用问号替换所有传递的参数
你知道如何做到这一点吗 使用replaceAll函数很简单
String str = "INSERT INTO users (lastname687878, age1, city55,email, firstname66) VALUES (33,30,'Austin', 'jon@ds.com', 'Jon')";
System.out.println(str.replaceAll("'.+?'","?").replaceAll(",\\d+", ",?").replaceAll("\\(\\d+", "(?"));
输出:
INSERT INTO users (lastname687878, age1, city55,email, firstname66) VALUES (?,?,?, ?, ?)
通常情况下,情况正好相反。为什么要这样做?我正在捕获对数据库的查询,不想捕获参数值。要正确执行此操作并处理所有可能的变化,您需要一个真正的SQL解析器。正则表达式本身不能胜任这项任务,不一定。参数并不总是字符串,可以是数字。在这个例子中,30不会被替换为?HHey,我只是在eclipse中运行它,这里点(.)表示任何字符,可以是数字或字符串。如果您有疑问,请运行并检查。正在寻找你的反馈。啊,我错过了。谢谢,将试用超过试用,这是我的代码最终字符串in=“插入用户(姓氏、年龄、城市、电子邮件、名字)值('Jones15560503',116719280',Austin','bob2008584593@example.com“,‘Bob-2106121947’”;System.out.println(in.replaceAll(“.+?”,“?”);这里是输出插入到用户(lastname、age、city、email、firstname)值(?,116719280,?,,?,?,?)中。实际上,我在number或string中的意思是,如果参数值不是string,那么它周围就不会有任何引号(')