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/