zoukankan      html  css  js  c++  java
  • 做SQL解析时遇到的问题

    相对于算术表达式,Json和XML等解析,SQL就比较复杂了。

    举个例子来说:符号“(”是目前的SqlAnalyzer1.00中作为进入递归的标志之一,到“)”结束,中间是个查询语句。如果测试用例也是这样,自然没有问题,但是,SQL是灵活的...

    首先,括号里未必是子查询,它可能是函数的一部分,比如count(*), 这时就得回退记号,然后按函数重读;

    其次,函数嵌套也常见,比如substr里面有个length,这时候读到第一个“)”就认为结束是不合情理的;

    其三,有时查询不是非放到括号里才能正常执行的。

    不知Oracle或是MySQL的解释器是怎么做的,我目前能做到无函数有select/from/where/order by子句,多重子查询的SQL解析,总之我感觉要做出一个完美普适的SQL解析器还需要一些时日。

    2020年5月28日

  • 相关阅读:
    多窗体
    滚动条
    个人信息调查
    登录页面
    蓝桥杯——放麦子
    java的BigDecimal
    蓝桥杯——判定字符的位置。
    输出日历
    蓝桥杯---简单的计算器
    蓝桥杯--Quadratic Equation
  • 原文地址:https://www.cnblogs.com/heyang78/p/12980015.html
Copyright © 2011-2022 走看看