HTML JS 解析器出sql 中 的所有表名称,支持多条SQL

这篇具有很好参考价值的文章主要介绍了HTML JS 解析器出sql 中 的所有表名称,支持多条SQL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<!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.]+)的模式来匹配FROMJOIN关键字后面的表名。

解析过程如下:

  1. 首先,通过document.getElementById获取输入SQL语句的值。
  2. 然后,定义一个正则表达式regex,使用全局匹配和忽略大小写选项,以匹配FROMJOIN关键字后面的表名。
  3. 使用regex.exec方法在输入的SQL语句中进行迭代匹配,将匹配到的表名添加到tableNames数组中。
  4. tableNames数组进行去重操作,使用Array.from(new Set(tableNames))
  5. 最后,将去重后的表名以换行符分隔显示在页面上。

请注意,此示例只是一个简单的演示,可能无法覆盖所有复杂的SQL语法规则和边缘情况。对于更复杂的SQL语句解析需求,可能需要使用更强大的SQL解析库或编写更复杂的解析器代码。文章来源地址https://www.toymoban.com/news/detail-638563.html

到了这里,关于HTML JS 解析器出sql 中 的所有表名称,支持多条SQL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Marked.js - HTML 中直接解析显示 Markdown

    Marked.js 是一个 Markdown 解析和编译器,可以在 JavaScript 中将 Markdown 转为 HTML。结合 HTML DOM,可以实现在 HTML 中直接解析显示 Markdown。 在 textarea 中编写 Markdown: 用浏览器直接打开效果如下: github-markdown-css:仿 GitHub Markdown 样式:

    2024年02月13日
    浏览(33)
  • pandas dataframe获取所有行名称与列名称

    pandas中,dataframe获取行名称,可以有如下两种方式。 df.index为RangeIndex类型,df.index.values属性会输出一个numpy.ndarray类型的数组,将这个数组转化为list,就可以得到所有行名称的list。 该方法的输出为: 更多时候,我们是要想获得dataframe的列名,有如下三种方式。 第一种方式

    2024年02月13日
    浏览(47)
  • DBeaver一次性执行mysql多条sql

    最新开始弃用Navicat,改用dbeaver,DBeaver需要Java语言支持,所以安装之前需要配置JDK环境; 再使用DBeaver执行多个SQL语句时(语句已使用;分隔)报错: 一、选中多条sql语句后,使用快捷键:alt+x 执行,即可; 二、在DBeaver的 连接设置中 驱动属性 中 allowMultiQueries 从 默认的fal

    2024年02月11日
    浏览(70)
  • 【shell】通过EOF实现一个链接执行多条sql

    在shell脚本中,通常将EOF与 结合使用,表示后续的输入作为子命令或子Shell的输入,直到再遇到EOF为止,再返回到主Shell。EOF( 即 end of file )只是一个分界符。 EOF一般会配合cat能够多行文本输出,本文最后实现通过EOF执行多条sql。     两个都是获取stdin,并在EOF处结束stdin,输

    2024年02月12日
    浏览(42)
  • 【C#/.NET】Dapper使用QueryMultipleAsync执行多条SQL

    ​  目录   背景 解决方案 总结           对于查询数据列表的功能,需要分页已经查询总数。这里涉及两句SQL,一个是查询分页对应的数据,第二个是Count(*); 会导致部分重复代码和两次的数据库查询。           Dapper有封装QueryMultipleAsync的异步方法支持执行多条SQL

    2024年02月08日
    浏览(40)
  • Vue - 【支持Nuxt.js】超详细网站接入国家 “天地图“ 完整流程,提供显示地图、IP 属地定位 / 用户定位的城市名称、用户定位的经纬度等超多功能(可复制运行示例代码,详细注释及常见问题)

    如果您需要 uniapp 版本,请访问 这篇文章。 关于天地图的配置及使用教程的文章几乎没有,本文站在小白的角度从 0-1 进行配置和使用。 本文实现了 Vue.js / Nuxt.js 网站项目,详细天地图申请key及配置教程,提供了地图显示及标点、用户当前 IP 属性定位、获取用户定位城市名

    2024年02月02日
    浏览(48)
  • sql Left Join 关联多条数据情况下只取一条数据

    存在b表中foreign_key多条关联a表中的id 需要只取b表中的一条数据(例如取最新的时间的一条) 1.解决方式:使用ROW_NUMBER () over()新增一列编号,排序后对新增列进行筛选 2.解决方式:使用listagg函数多列转一行,再结合substr函数截取最后一条

    2024年02月06日
    浏览(43)
  • uniapp获取手机可接收的所有的WiFi名称与信号强度

    文章目录 前言 一、代码及注释 总结 :HBuilder uniapp wifi RSSI SSID 最近做项目有一个需求,要求用HBuilder uniapp做一个app显示手机可接收的WiFi名称和对应的场强(信号强度),百度找了一圈,只找到了关于WiFi名称的一些资料,于是根据一篇文章修改了一下(附在文末),最

    2024年02月11日
    浏览(37)
  • python pandas 获取Excel文件下所有的sheet名称,表格数据

    方法1: 一定要加sheet_name=None,才能读取出所有的sheet,否则默认读取第一个sheet,且获取到的keys是第一行的值 方法2:

    2024年02月13日
    浏览(50)
  • mapper.xml中循环执行多条语句时报错,但是单独拿SQL到数据库却可以执行

    我是批量修改数据,用foreach标签包住update语句,报错信息如下: 最后解决,在数据源配置中添加参数:

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包