Hql

Hql 

where子句允许出现的表达式包括了SQL中可以使用的大多数情况:

l         数学操作:+,-,*,/

l         真假比较操作:=,>=,<=,<>,!=,like

l         逻辑操作:and,or, not

l         字符串连接:||

l         SQL标量函数:例如upper()和lower()

如果子查询返回多条记录,可以用以下的关键字来量化:

l         all:表示所有的记录。

l         any:表示所有记录中的任意一条。

l         some:与any用法相同。

l         in:与any等价。

l         exists:表示子查询至少要返回一条记录。

例如,下面语句返回所有学生的年龄都大于22的班级对象:

from Group g where 22<all (select s.age from g.students s)

下述语句返回在所有学生中有一个学生的年龄等于22的班级:

from Group g where 22=any (select s.age from g.students s)

或者

from Group g where 22=some (select s.age from g.students s)

或者

from Group g where 22 in (select s.age from g.students s)

2、对象之间无关联,可以通过theta-style join 方式进行查询

3、Hq1中的函数:

   3.1、 subString.同C# SubString

   3.2、COALESCE:返回其参数中第一个非空表达式

          语法 
      COALESCE (expression [ ,...n ]) 

      参数 
        expression 任何类型的表达式。
        n 
          表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。   
        返回类型 
          将相同的值作为 expression 返回。 
        注释 
          如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。

     COALESCE(expression1,...n) 与此 CASE 函数等价: 

      CASE 
        WHEN (expression1 IS NOT NULL) THEN expression1 
          ... 
        WHEN (expressionN IS NOT NULL) THEN expressionN 
        ELSE NULL 

        3.3 ISNULL,NULLIF 。ISNULL 同数据库。

              NULLIF 用于检测两个表达式。NULLIF(expression, expression) 。如果两个表达式相等,则返回NULL,否则返回第一个表达式

   3.4 EXTRACT  

      SELECT DATE;   96/11/07
      SELECT EXTRACT(YEAR FROM DATE);     1996
      SELECT EXTRACT(MONTH FROM DATE+30); 12
      SLEECT EXTRACT(DAY FROM DATE+2);   09
      SELECT TIME;   14:52:32
      SELECT EXTRACT(HOUR FROM TIME); 14
      SELECT EXTRACT(SECOND FROM TIME+30);   
INVALID TIME

      3.5、Locate 。LOCATE(str1,str2 ,[,start]) 返回第一个表达式在第二个表达式中的位置。未找到返回0;任意一个为NULL 则返回NULL

   

节选:http://www.cnblogs.com/AriLee/archive/2011/03/29/1999265.html

        http://blog.163.com/zhajie@126/blog/static/771742002010022348585/

原文地址:https://www.cnblogs.com/tyb1222/p/3838508.html