<!DOCTYPE html>
<html>
<head>
<title>SQL表名提取器</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
function extractTableNames() {
// 获取输入的SQL语句
var sql = document.getElementById("sqlInput").value;
// 定义正则表达式来匹配表名
var regex = /\b(?:FROM|JOIN)\s+([\w.]+)/gi;
var tableNames = [];
// 使用正则表达式提取表名
var match;
while (match = regex.exec(sql)) {
var tableName = match[1];
// 处理带有库名称的表名,例如:fr.tablename
var parts = tableName.split(".");
if (parts.length > 1) {
tableName = parts[parts.length - 1]; // 获取最后一部分作为表名
}
tableNames.push(tableName);
}
// 去重表名
var uniqueTableNames = Array.from(new Set(tableNames));
// 在页面上显示提取的表名
var tableNamesContainer = document.getElementById("tableNamesContainer");
tableNamesContainer.innerHTML = uniqueTableNames.join("<br>");
}
</script>
</head>
<body>
<h1>SQL表名提取器</h1>
<label for="sqlInput">输入SQL语句:</label>
<br>
<textarea id="sqlInput" rows="5" cols="50"></textarea>
<br>
<button onclick="extractTableNames()">提取表名</button>
<br>
<div id="tableNamesContainer"></div>
</body>
</html>
一个html页面 ,有一个SQL输入框, js根据输入的sql 使用SQL解析器出sql 中 的所有表名称, 并去重表名显示出来, 按照SQL解析器的语法来提取 sql 表名称 ,注意一定要要一步步 分析并写好代码,注意输入的SQL 可能是多条查询SQL ,需要把表名称全部提取并去重,并考虑表名前可能加库名称 如 fr.tablename 需要考虑 解析规则 词法分析(Lexical Analysis):SQL解析器首先将SQL语句分解为多个单词或符号,这些单词称为"词法记号"(tokens)。词法分析器根据特定的规则,例如空格、逗号、关键字等,将输入的SQL语句分割成词法记号序列。
这个示例使用了JavaScript中的正则表达式来匹配SQL语句中的表名。正则表达式的模式是根据常见的SQL语法规则来设计的,它使用了\b(?:FROM|JOIN)\s+([\w.]+)的模式来匹配FROM
和JOIN
关键字后面的表名。
解析过程如下:文章来源:https://www.toymoban.com/news/detail-638563.html
- 首先,通过
document.getElementById
获取输入SQL语句的值。 - 然后,定义一个正则表达式
regex
,使用全局匹配和忽略大小写选项,以匹配FROM
和JOIN
关键字后面的表名。 - 使用
regex.exec
方法在输入的SQL语句中进行迭代匹配,将匹配到的表名添加到tableNames
数组中。 - 对
tableNames
数组进行去重操作,使用Array.from(new Set(tableNames))
。 - 最后,将去重后的表名以换行符分隔显示在页面上。
请注意,此示例只是一个简单的演示,可能无法覆盖所有复杂的SQL语法规则和边缘情况。对于更复杂的SQL语句解析需求,可能需要使用更强大的SQL解析库或编写更复杂的解析器代码。文章来源地址https://www.toymoban.com/news/detail-638563.html
到了这里,关于HTML JS 解析器出sql 中 的所有表名称,支持多条SQL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!