我有一个用例,我需要从我的 sql 查询中获取表名,就像假设我有
select * from schema.tableName
或者
select * from schema.tableName where id = 123
或者
select column1, column2, column3 from schema.tableName where id = 123
在上述情况下需要从 sql 查询中获取“schema.tableName”,如何在 Node.js 中使用正则表达式来完成。
我已经尝试过,(?<=from)(\s+\w+\b)
但我收到警告,javascript 不支持向后查看。
可以轻松编写与您作为示例提供的查询类似的查询中的表名的正则表达式。
试试这个正则表达式: /select .* from ([^ ]*)/i
请参阅下面的完整代码:
var sql1 = "select * from tableName";
var sql2 = "select * from tableName where id = 123";
var sql3 = "select column1, column2, column3 from tableName where id = 123";
var t1 = sql1.match(/select .* from ([^ ]*)/i);
var t2 = sql2.match(/select .* from ([^ ]*)/i);
var t3 = sql3.match(/select .* from ([^ ]*)/i);
console.log(t1[1]);
console.log(t2[1]);
console.log(t3[1]);
但是,如果您需要从所有可能的有效选择查询中匹配表名,RegEx 将变得复杂。
您可以使用上述 RegEx 的精简版本来获得相同的结果。
/ from ([^ ]*)/i
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句