现在的位置: 首页 > 综合 > 正文

MOQL–操作数(Operand) (二)

2013年10月08日 ⁄ 综合 ⁄ 共 2701字 ⁄ 字号 评论关闭
常量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.7823.3e15等。

          长整型Operand表示的数据范围与Java语言中的java.lang.Long对象所表示的数据范围一致。在MOQLSQL语法支持的byteshortinteger以及long类型都以长整型Operand表示。另外长整型Operand还支持八进制、十进制以及十六进制的数据格式,如:193435L0xAFCD-1235072等。

           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

抱歉!评论已关闭.