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.rzrgm.cn/AriLee/archive/2011/03/29/1999265.html
http://blog.163.com/zhajie@126/blog/static/771742002010022348585/
浙公網安備 33010602011771號