我正在寻找一种模式,以便为此类 SQL 查询获取表名;
INSERT INTO table(uuid,type) VALUES (?,?)
这里我要获取“表”
我有一个模式,但只有在没有括号时它才有效 INSERT INTO 表 VALUES (?,?)
[from|into|update]\s+(?:\w+.)(\w+)(\s$|\s+(WHERE))
谢谢
注意:它与 get table name from query 中的模式不同
最佳答案
这绝对不是从 SQL 中提取表名的万无一失的方法。但这里有一个使用正则表达式解决问题的方法,就像你需要的那样。您已经在提供的表达式中指定了 WHERE 部分,但如果您只需要名称,真的有必要吗?
(?is)\b(?:from|into|update)\s+(\w+)
请注意,SQL 语句的格式化方式有很多种,任何人都不太可能想出一个可以按照您需要的方式解析 SQL 的表达式。
关于java - 使用正则表达式从查询中获取表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34858192/