一.首先解釋一下可能會查詢的基礎問題: 1.1db2 “with ur”是什麼意思: 在DB2中,共有四種隔離級:RS,RR,CS,UR.以下對四種隔離級進行一些描述,同時附上個人做試驗的結果。隔離級是影響加鎖策略的重要環節,它直接影響加鎖的範圍及鎖的持續時間。兩個應用程式即使執行的相同的操作,也可 ...
一.首先解釋一下可能會查詢的基礎問題:
1.1db2 “with ur”是什麼意思:
在DB2中,共有四種隔離級:RS,RR,CS,UR.以下對四種隔離級進行一些描述,同時附上個人做試驗的結果。隔離級是影響加鎖策略的重要環節,它直接影響加鎖的範圍及鎖的持續時間。兩個應用程式即使執行的相同的操作,也可能由於選擇的隔離級的不同而造成加鎖的結果不同。
1.2查看連接db2資料庫的版本:
命令查看: 用db2level 查看
1.3在db2中會有''字元串和null的區分
1.4聲明一下這個開發時基於https://www.csdn.net/gather_2d/MtTaAg5sODY1My1ibG9n.html這個網頁里的數據的
WITH
emp(deptno,job,telephone) AS(
SELECT * FROM (
VALUES (10,'persident','apple'),(30,'manager','orange'),(10,'persident','orange'),(20,'anayst','apple'),(30,'clerk','apple'),(20,'manager','orange')
,(20,'clerk','apple'),(10,'manager',null),(30,'sakesman','apple'),(10,'manager',''))
)
,fld(deptno,job,telephone) AS (
SELECT
deptno,
decode(row_number() over(PARTITION BY deptno,job),1,job) job,
decode(row_number() over(PARTITION BY deptno,telephone),1,telephone) telephone
FROM emp
)
SELECT
deptno,
listagg(job,',') within GROUP (ORDER BY job DESC ) jobs,
listagg(telephone,',') within GROUP (ORDER BY telephone) telephones
FROM fld
GROUP BY dep
整個過程我們可以看到''字元串是作為一個字元來傳遞的,而null值則是被過濾掉了。由於db2伺服器版本過低,所以不能使用distinct進行拼接的過濾,只能使用11版本以前的函數進行開發測試,後續繼續補充