写一个解析函数:SQL布尔表达式的求值

问题描述

写一个解析函数:SQL布尔表达式的求值

编写条件语句解析方法:

已知一个单条件判断方式:boolean compareItem(String fieldName, String operation, String operValue);

实现一个SQL解析函数,要求:
支持and、or;
支持括号;
支持引号;
字段名使用前缀$标识。
输入语句如:($size >= 500 and ($type != "类 型 12 3" or 0 <= $checked)) 其中 size type checked为字段名

public class ParseCondition {
    public static void main(String[] args) throws ParseException {
        System.out.println(parse("($size >= 500 and ($type != \"类 型 12 3\" or 0 <= $checked))"));
    }
    public static boolean parse(String conditionStr) {
        //请编写

    }
    private static boolean compareItem(String fieldName, String operation, String operValue) {
        System.out.println(fieldName + " " + operation +  " " + operValue);
        return !operation.equals("!=");
    }
}

没学过java,请教各位大神。写出文法、伪代码都可以的。

时间: 2024-09-18 03:18:09

写一个解析函数:SQL布尔表达式的求值的相关文章

用C语言写解释器(二)——表达式求值

声明 为提高教学质量,我所在的学院正在筹划编写C语言教材.<用C语言写解释器>系列文章经整理后将收入书中"综合实验"一章.因此该系列的文章主要阅读对象定为刚学完C语言的学生(不要求有数据结构等其他知识),所以行文比较罗嗦,请勿见怪.本人水平有限,如有描述不恰当或错误之处请不吝赐教!特此声明. 内存管理 既然是表达式求值,自然需要在内存中保存计算结果以及中间值.在<用C语言写解释器(一)>中提过:变量要求是若类型,而 C 语言中的变量是强类型,为实现这个目标就需要

老师让我用c#写一个类似sql格式化的工具,想问下原理是什么,如果有源码更好。

问题描述 如题 解决方案 解决方案二:没人吗?好急啊!!!!!!解决方案三:....说得也太含糊了点.....解决方案四:就是类似p/sql的那种格式化功能解决方案五:把关键字都大写,换色什么的?感觉是个麻烦的东西呢..要做的大概就是识别,更正2块吧..简单地写一写的话识别用contains,更正用replace就行了..不知道你具体要做到什么程度了..解决方案六:引用4楼tinydyw的回复: 把关键字都大写,换色什么的?感觉是个麻烦的东西呢..要做的大概就是识别,更正2块吧..简单地写一写的

自己写一个防止SQL注入函数

函数 <%function sqlcheck(Str,errtype)if Instr(LCase(Str),"select ") > 0 or Instr(LCase(Str),"insert ") > 0 or Instr(LCase(Str),"delete ") > 0 or Instr(LCase(Str),"delete from ") > 0 or Instr(LCase(Str),

java 线程 sql qualz-如何写一个定时任务要每月的1号01:00执行这个sql

问题描述 如何写一个定时任务要每月的1号01:00执行这个sql 1C insert into test_dept_monthhours(yearmonthbranchsubtotal) select yearmonthbranchsum(dm)+sum(sm)+sum(smt)+sum(sup)+sum(ltnc) from ehruser.HO_DEPT_MONTHHOURS@traininglink where rownum<5 group by branchyearmonth 解决方案

深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解

 这篇文章主要介绍了深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解,本文讲解了一般理论.按值传递.按引用传递.按共享传递(Call by sharing).按共享传递是按值传递的特例等内容,需要的朋友可以参考下     介绍 本章,我们将讲解在ECMAScript向函数function传递参数的策略. 计算机科学里对这种策略一般称为"evaluation strategy"(大叔注:有的人说翻译成求值策略,有的人翻译成赋值策略,通看下面

深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解_基础知识

介绍 本章,我们将讲解在ECMAScript向函数function传递参数的策略. 计算机科学里对这种策略一般称为"evaluation strategy"(大叔注:有的人说翻译成求值策略,有的人翻译成赋值策略,通看下面的内容,我觉得称为赋值策略更为恰当,anyway,标题还是写成大家容易理解的求值策略吧),例如在编程语言为求值或者计算表达式设置规则.向函数传递参数的策略是一个特殊的case. http://dmitrysoshnikov.com/ecmascript/chapter-

springmvc-用jsp写一个简单的登录页面

问题描述 用jsp写一个简单的登录页面 求写一个登录页面,有form表单,然后能提交到数据库.框架是spring,数据库是sql,用java,jsp写..我是新手,所以恳求大神帮帮我.非常感谢谢.. 解决方案 form表单里面放输入框组,用于填写数据,像登陆这种涉及隐私的操作,最好使用post方式提交, 在action层,我看到你只提到了spring,那就直接servlet来接收数据进行处理,在doPost中通过request.getParameter(str)获取参数,经过一系列校验之后,就可

求SQL高手帮我写一个存储过程,万分感谢!

问题描述 求SQL高手帮我写一个存储过程,万分感谢! 求高手帮帮我..是一个保险类的表.要展示出目标值 实际值 达成率 上年同期 同比增长 指标代码都在图里 解决方案 拍照技术太差了,都不好看 解决方案二: 再记一个SQL分页存储过程 解决方案三: 会是会,但是不太想写, 一.题目要求资料看不清 二.50C吸引力不大 三.如果是你的作业,那你还是自己动手练习:如果是你的工作,那这价值可不止50C

【SQL 学习】求一个表中列值的最前三名

表A是个职工工资表,现在你写一个sql,实现如下功能: 1.返回表中所有结果 2.将工资最高的3个职工记录信息按工资从低到高排序放在查询结果的前3个最高工资记录 3.其他的记录以正常的select结果输出 写一个sql来实现 利用 比较大小 select decode(sign(4-变量1),1,-变量1,变量1) from dual; sign()函数根据某个值是0.正数还是负数,分别返回0.1.-1 SQL> select sign(3),sign(-3),sign(0) from dual