使用DB2時的一些問題

2022-03-05 18:13:56 字數 1013 閱讀 3337

1.「||」的字元連線問題

在db2中是用「||」連線字串的,這點與別的語言和資料庫是使用「+」有很大區別。在使用「||」時經常會出現「[ibm][cli driver][db2/6000] sql0440n  未找到型別為 "function" 命名為 "||" 且具有相容自變數的已授權例程。  sqlstate=42884」的錯誤,原因是有非字元型別參與了「||」運算,如有變數或字段出現在「||」的運算中,解決辦法是把變數或字段傳給char()函式再參與運算就ok了。下面舉個例子:

select a.inf || '-' || a.iyf || '-01' from tablea a    --會出錯,inf年份,iyf月份

select char(a.inf) || '-' || char(a.iyf) || '-01' from tablea a   

--正確

2.時間比較問題

在db2中不能使用datediff函式,或者說是我的不能用,那麼怎麼比較兩個時間相差多少並返回以日、月或年等為時間單位的值呢?用timestampdiff()函式!例子:

select timestampdiff(64,char(timestamp(a.dcraetetime)- timestamp('2007-5-25-13.56.41'))) from tablea a   

--其中64表示返回以月為單位的值

3.like後面不能跟字段

如這樣寫會出錯:

select item1 from table1 where item2 like item3||'%'

如果僅僅是想寫像上面那樣的like,可以用left或substr函式:

select item1 from table1 where left(item2,length(item3))=item3

或select item1 from table1 where substr(item2,1,length(item3))=item3 

DB2中的一些函式

最近用db2,資料庫之間的差異還是很大的,好多函式都不一樣 1.去空格 db2中 ltrim 是去左邊空格,rtrim 是去右邊空格。informix中 trim 就是去空格。用法 例 string a abc db2中 ltrim a abc rtrim a abc rtrim ltrim a a...

DB2中的一些函式

最近用db2,資料庫之間的差異還是很大的,好多函式都不一樣 1.去空格 db2中 ltrim 是去左邊空格,rtrim 是去右邊空格。informix中 trim 就是去空格。用法 例 string a abc db2中 ltrim a abc rtrim a abc rtrim ltrim a a...

一些問題(2)

關於監聽盒子的外部儲存器 usb,sdcard等 一種很常見的方法是註冊監聽廣播action media mounted action media unmounted和action media removed,來判斷外部儲存器的掛載和解除安裝,但是當有兩個usb介面時,其中乙個接入,另乙個接入後拔出...