1、當(dāng)插入的字段不能為空時(shí)(比如這個(gè)字段是主鍵或者不為空)亿眠,可以使用以下函數(shù)。有好幾種荆烈,因?yàn)槲覒芯怪海跃椭涣信e一種。
COALESCE是一個(gè)函數(shù)岔帽, (expression_1, expression_2, ...,expression_n)依次參考各參數(shù)表達(dá)式,遇到非null值即停止并返回該值屎飘。如果所有的表達(dá)式都是空值,最終將返回一個(gè)空值钦购。使用COALESCE在于大部分包含空值的表達(dá)式最終將返回空值。
2遵堵、字符串如何拼接怨规,用兩個(gè)豎杠||。
3波丰、db2if循環(huán),如果有elseif條件爽蝴,這個(gè)elseif必須連著纫骑,不能用空格,不然報(bào)錯(cuò)先馆,我按著java寫法,找不到原因梅惯。最后結(jié)尾必須要有 end if仿野;格式如下
IF 條件 THEN
ELSEIF 條件 THEN
ENDIF;
4、db2里面字符串必須用單引號(hào)' '脚作,不然報(bào)錯(cuò)。
5魄梯、左連接表宾符,連接多個(gè)表,如果多個(gè)表中都有同樣的字段魏烫,同事查詢條件沒有指定哪個(gè)表的具體字段肝箱,會(huì)報(bào)錯(cuò)稀蟋。報(bào)錯(cuò)信息如下:
A REFERENCE TO COLUMN "string" IS AMBIGUOUS..SQLCODE=-203,SQLSTATE=42702
在查詢的開頭指定要查那個(gè)表的字段為主。比如a骏融、b萌狂、c三個(gè)表都有htbh,指定a.htbh茫藏。這個(gè)錯(cuò)誤應(yīng)該沒有人會(huì)犯吧,只有我這種菜鳥才會(huì)凉当。
6售葡、DB2修改表結(jié)構(gòu),一定要重組表結(jié)構(gòu)挟伙,不然報(bào)錯(cuò) “7”
這種情況一般碰到插入數(shù)據(jù),數(shù)據(jù)超出字段設(shè)定的長度時(shí)才需要修改。
如何查詢某個(gè)字段的最大長度
SELECT? MAX(LENGTH(字段))? LENGTH FROM 表名
修改表結(jié)構(gòu)
ALTER TABLE 表名 ALTER COLUMN 字段名 SET DATA TYPE CHARCTER(6); 這個(gè)CHARCTER(6)就是你想修改成什么樣的類型瓜贾。
修改完表結(jié)構(gòu)還需要重組表結(jié)構(gòu)祭芦。
CALL SYSPROC.ADMIN_CMD('REORG TABLE 表名') 這個(gè)表名是修改了表結(jié)構(gòu)的表。
7龟劲、DB2數(shù)據(jù)庫略有不同,在獲取當(dāng)前時(shí)間上仰禀,使用如下的查詢sql:SELECT current timestamp FROM sysibm.sysdummy1 一些其他的比如日期格式轉(zhuǎn)換這一塊不太了解的蚕愤〗任茫可以用這個(gè)悬嗓。
日期類型轉(zhuǎn)換成字符串
TO_CHAR(TO_DATE(字段名),'yyyy-MM-dd') 年月日
8、the string representation of a datetime value is out of range 包竹,輸入的參數(shù),超出時(shí)間的范圍苗缩,這個(gè)坑也是本人的腦殘行為堰氓。寫存儲(chǔ)過程的碰到的,傳入?yún)?shù)不要傳一些沒有的日期双絮,比如什么2月30日這種。
9软免、存儲(chǔ)過程寫法
CREATE OR REPLACE PROCEDURE 存儲(chǔ)過程名稱 PLNAME(輸入IN? 參數(shù)名STR 類型 DATE)
BEGIN
? ? ? ? 定義變量 DECLARE Sql? VARCHAR(5000);
? ? ? ? 給變量賦值 SET Sql='CREATE TABLE LIKE student';
? ? ? ? 執(zhí)行語句 PREPARE creTABLE FROM Sql; EXECUTE creTable焚挠;
END
10、db2 存儲(chǔ)過程使用動(dòng)態(tài)sql傳遞日期參數(shù)時(shí)報(bào)SQLCODE=-401,SQLSTATE=42818
||chr(39)||v_date||chr(39)榛泛, chr(39)表示單引號(hào)jldate=‘||v_date||’
11噩斟、 CANNOT BE INTERPRETED USING FORMAT STRING FOR TIMESTAMP_FORMAT FUNCTION.SQLCODE=-20448,SQLSTATE=22007
字符串轉(zhuǎn)日期沒有設(shè)置格式