Tengo una consulta sql y quiero extraer el alias de la tabla, por ejemplo:
select * from t_1 a join t_2 b on a.id = b.t_id where a.words = ? and b.words = ?el resultado que esperaba
a: t_1, b: t_2
Puede probar un enfoque de coincidencia de expresiones regulares para capturar cada nombre de tabla y alias.
var sql = "select * from t_1 join t_2 b on t_1.id = b.t_id where t_1.words = ? and b.words = ?"; var aliases = sql.match(/(?<=\b(?:from|join) )\w+(?: (?!\bjoin\b)\w+)?/g); aliases.forEach(x => console.log((x.split(" ")[1] ? x.split(" ")[1] : x.split(" ")[0]) + ": " + x.split(" ")[0]));Tenga en cuenta que, en general, para hacer lo que desea, se necesitaría un analizador de SQL formal. Regex solo no es adecuado, y se necesitarían cientos de líneas de código, probablemente más.