1、substring函數
此函數能夠用在HQL語句的columns部分和where後面,主要目的能夠對數據庫字段中的某數據進行按條件截取,並動態組合成自已想要的數據格式,具體使用方法如:
example: oldSid:812108M00003 -> newSid:08-M00003
hql = "select substring(oldSid,5, 2)+'-'+substring(oldSid,7,6) as newSid from Table";
substring()函數通常帶有三個參數,第一個為要格式化的源字段,第二個為開始執行的起始位置,(下標從臺開始),第三個參數為從開始位置起要截取幾位數據,全部上面語句的結果為:
newSid:08-M00003
另substring函數也能夠用在where語句後面如:
hql = "from Table a where substring(a.description, 1, 3) = 'cat'";
2、子查詢的用法
假設現在有兩張表Company(公司表),Employee(員工表),關係一個公司有多個員工,因此一個company記錄應該對應多條employee紀錄.即在employee有一個 FK 指向Company的 PK.
condition:找出每一個公司中員工工資(pay)最高的那一位.
hql:
select (select max(e.pay) from c.Employee e) from Company c
note:select後面的子查詢必須寫在()中,
其運行後對應的sql語句為:
select
(select
max(e.pay)
from
Employee e
where
e.HSUID=c.HSUID) as col_0_0_
from
Company c;
hql中的子查詢也能夠帶查詢條件以下面也能夠寫成:
select (select max(e.pay) from a.employee e where e.name=:name) from company a
select
(select
max(e.pay)
from
Employee e
where
e.HSUID=c.HSUID and e.name = '01') as col_0_0_
from
Company c;
3、coalesce函數的用法
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
示例:表score表明某同窗本次考試各科成績的得分.結構以下:
語文 數學 英語
58 NULL 95
95 NULL 0
NULL NULL 34
NULL NULL NULL
0 95 NULL
0 0 0
NULL 95 95
95 NULL NULL
hql:
select a from score a where coalesce(a.chinese,a.math,a.english) = 95;
執行後結果為:
95 NULL 0
NULL 95 95
95 NULL NULL
(3 rows affected)
第一行因為a.chinese(語文)不空,因此where a.chinese = 95;return false;
第三行因為a.english = 34,因此return false;
第五行因為a.chinese = 0;標誌也不為空,因此return false; 數據庫
四. ISNULL 函數和 NULLIF 函數
express
SQL Server裏的 ISNULL 與 ASP 中的 IsNull不一樣,SQL Server 中有兩個參數,語法: 服務器
ISNULL(check_expression, replacement_value) 函數
NULLIF 用於檢查兩個表達式,語法:
NULLIF(expression, expression) spa
六.LOCATE函數的用法
locate函數返回第一個string在第二個string中的起始位置,若是第一個string或第二個string爲空,則結果反回空(NULL),若是第一個字串中第二個中沒有找見,則返回零(0), 對象
語法介紹:
LOCATE( string1, string2 [, start] )
string1:
任何字串表達式,此字串做爲一個字串對象去字串2中進行批配.
string2:
任何字串表達式,此字串包括第一個字串.
start:
從字串string2中搜尋string1是的起始位置,假如沒有設置,或爲NULL,或所賦值小於壹,則統一從1開始搜尋. blog
Examples: ip
DE<SELECT LOCATE( 'Peter', 'Peter Steve Tom' )DE<
七.CAST函數的用法
CAST 函數 [數據類型轉換] 字符串
功能:
返回轉換爲提供的數據類型的表達式的值。
語法:
CAST(expression AS data type)
參數:
expression 要轉換的表達式
data type 目標數據類型
用法:
若是未指定字符串類型的長度,數據庫服務器將選擇適當的長度。若是沒有爲十進制轉換指定精度和小數位數,則數據庫服務器將選擇適當的值。
下面的函數確保字符串被用做日期:
SELECT CAST( '2000-10-31' AS DATE )
計算表達式 DE<1 + 2DE< 的值,並將結果轉換爲單字符字符串。
SELECT CAST( 1 + 2 AS CHAR )
能夠使用 CAST 函數縮短字符串: SELECT CAST( 'Surname' AS CHAR(5) )