作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在更新语句之后获取 where 子句,例如
UPDATE user_accounts SET bio='This is my bio' WHERE user_id = 1 OR name = 'Alex';
目前,我可以使用以下代码获取 where 子句之后的所有内容:
String query = "UPDATE user_accounts SET bio='This is my bio' WHERE user_id = 1 OR name = 'Alex'";
int index = query.toUpperCase().indexOf("WHERE");
if (index != -1) {
System.out.println(query.substring(index));
}
但后来我发现这有很大的缺陷,因为这些示例查询会失败:
UPDATE user_accounts SET bio='This is where my bio is' WHERE user_id = 1 OR name = 'Alex';
UPDATE user_accounts SET whereColumn='' WHERE user_id = 1 OR name = 'Alex'
UPDATE user_whereabouts SET columnName='' WHERE user_id = 1 OR name = 'Alex'
从本质上讲,如果表名或任何列名或 SET 下的列值包含单词“where”(不区分大小写),这将失败。
我目前的想法是按照执行以下操作的正则表达式的思路:
我不太熟悉正则表达式,因此,我需要帮助。请注意,任何其他实现目标的方法也将受到高度赞赏。
最佳答案
您需要某种 SQL 解析器,因为正则表达式在许多情况下会失败(例如,如果 where 子句有子选择怎么办?)
我从未尝试过,但 JSQLParser似乎是一个很好的解决方案
关于java - 在 Update 语句后获取 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58659572/
我是一名优秀的程序员,十分优秀!