常量Operand
Operand支持的常量类型包括字符串型(String)、双浮点型(Double)、长整型(Long)以及NULL类型。
字符串Operand的格式与SQL中字符串的格式一致。字符串的两端需要用单引号(‘)包围,如:’String’、’字符串’、’123’、’123.1’、’null’等都表示字符串。当字符串中也需要包含单引号(‘)时,也完全遵从SQL字符串的约束,用两个相连的单引号(‘’)来表示一个字符串中的单引号如:’Str’’ing’其代表的字符串为”Str’ing”。
双浮点Operand可以表示的数据范围与Java语言中的java.lang.Double对象可以表示的数据范围一致。它可以覆盖浮点型(float)数据的数据范围。MOQL中所有浮点数都以双浮点Operand表示,如:123.4、-12.78、23.3e15等。
长整型Operand表示的数据范围与Java语言中的java.lang.Long对象所表示的数据范围一致。在MOQL中SQL语法支持的byte、short、integer以及long类型都以长整型Operand表示。另外长整型Operand还支持八进制、十进制以及十六进制的数据格式,如:19、3435L、0xAFCD、-1235、072等。
NULL类型Operand用来表示null。其只有null这一种表现形式,所有字母必须是纯小写。
常量Operand的代码示例如下:
try { Operand constant = MoqlUtils.createOperand("1234"); System.out.println(constant.toString() +" " + constant.getOperandType()); constant = MoqlUtils.createOperand("192.16"); System.out.println(constant.toString() +" " + constant.getOperandType()); constant = MoqlUtils.createOperand("'中国''china'"); System.out.println(constant.toString() +" " + constant.getOperandType()); constant = MoqlUtils.createOperand("null"); System.out.println(constant.toString() +" " + constant.getOperandType()); constant = MoqlUtils.createOperand("Null"); System.out.println(constant.toString() +" " + constant.getOperandType()); } catch (MoqlException e) { e.printStackTrace(); } |
其执行结果输出如下:
1234 CONSTANT 192.16 CONSTANT '中国''china' CONSTANT NULL CONSTANT Null VARIABLE |
字符串Null未被解析为NULL类型的常量Operand,而是被解析为了变量类型的Operand。
变量Operand
变量类型Operand的命名规范与Java语法中变量的标示符的命名规范一致。其标示符通常是以大小写英文字母、数字、下划线“_”和美元符号“$”组成,其中数字不能成为标示符的首字母。另外,标示符的命名也支持汉语的文字或其它语言的语言的文字,如: _data、a1、$a、长度、num等。
变量Operand的示例代码如下:
EntityMap entityMap = new EntityMapImpl(); entityMap.putEntity("num", 123); entityMap.putEntity("长度", 184); entityMap.putEntity("$a", 38); entityMap.putEntity("_data", 32); try { Operand variable = MoqlUtils.createOperand("num"); System.out.println(variable.toString() +" " + variable.getOperandType()); System.out.println(variable.operate(entityMap)); variable = MoqlUtils.createOperand("长度"); System.out.println(variable.toString() +" " + variable.getOperandType()); System.out.println(variable.operate(entityMap)); variable = MoqlUtils.createOperand("$a"); System.out.println(variable.toString() +" " + variable.getOperandType()); System.out.println(variable.operate(entityMap)); variable = MoqlUtils.createOperand("_data"); System.out.println(variable.toString() +" " + variable.getOperandType()); System.out.println(variable.operate(entityMap)); } catch (MoqlException e) { e.printStackTrace(); } |
其执行结果输出如下:
num VARIABLE 123 长度 VARIABLE 184 $a VARIABLE 38 _data VARIABLE 32 |
项目地址:http://sourceforge.net/projects/moql/
代码路径:svn://svn.code.sf.net/p/moql/code/trunk