天天看點

DB2常用函數

DB2分頁

/*foo*/ select * from ( select rownumber() over() as rownumber_, * from foos ) as temp_ where rownumber_ between ?+1 and ?

/*foo*/ select * from ( select rownumber() over() as rownumber_, row_.* from ( select distinct * from foos ) as row_ ) as temp_ where rownumber_ between ?+1 and ?

/*foo*/ select * from ( select rownumber() over(order by foo.bar, foo.baz) as rownumber_, * from foos foo order by foo.bar, foo.baz ) as temp_ where rownumber_ between ?+1 and ?

/*foo*/ select * from ( select rownumber() over() as rownumber_, row_.* from ( select distinct * from foos foo order by foo.bar, foo.baz ) as row_ ) as temp_ where rownumber_ between ?+1 and ?

語句:

case when expression then ... else ... end;

SELECT Name, Dept, Address..street, Address..number, Address..city,

      Address..state,

      CASE

         WHEN Address IS OF (US_addr_t) 

         THEN TREAT(Address AS US_addr_t)..zip

         WHEN Address IS OF (Germany_addr_t) 

         THEN TREAT (Address AS Germany_addr_t)..family_name

         WHEN Address IS OF (Brazil_addr_t)

         THEN TREAT (Address AS Brazil_addr_t)..neighborhood

      ELSE NULL END

      FROM Employee

      WHERE Salary > 20000;

1、類型轉化函數: 

  轉化為數字類型的: 

decimal, double, Integer, smallint,real 

Hex(arg):轉化為參數的16進制表示。 

  轉化為字元串類型的: 

char, varchar 

Digits(arg):傳回arg的字元串表示法,arg必須為decimal。 

  轉化為日期時間的: 

date, time,timestamp 

2、時間日期: 

year, quarter, month, week, day, hour, minute ,second 

dayofyear(arg):傳回arg在年内的天值 

Dayofweek(arg):傳回arg在周内的天值 

days(arg):傳回日期的整數表示法,從0001-01-01來的天數。  

midnight_seconds(arg):午夜和arg之間的秒數。 

Monthname(arg):傳回arg的月份名。 

Dayname(arg):傳回arg的星期。  

3、字元串函數: 

length,lcase, ucase, ltrim, rtrim 

Coalesce(arg1,arg2….):傳回參數集中第一個非null參數。 

Concat (arg1,arg2):連接配接兩個字元串arg1和arg2。 

insert(arg1,pos,size,arg2):傳回一個,将arg1從pos處删除size個字元,将arg2插入該位置。 

left(arg,length):傳回arg最左邊的length個字元串。 

locate(arg1,arg2,<pos>):在arg2中查找arg1第一次出現的位置,指定pos,則從arg2的pos處開始找arg1第一次出現的位置。 

posstr(arg1,arg2):傳回arg2第一次在arg1中出現的位置。 

repeat(arg1 ,num_times):傳回arg1被重複num_times次的字元串。 

replace(arg1,arg2,arg3):将在arg1中的所有arg2替換成arg3。 

right(arg,length):傳回一個有arg左邊length個位元組組成的字元串。 

space(arg):傳回一個包含arg個空格的字元串。 

substr(arg1,pos,<length>):傳回arg1中pos位置開始的length個字元,如果沒指定length,則傳回剩餘的字元。 

4、數學函數:  

Abs, count, max, min, sum 

Ceil(arg):傳回大于或等于arg的最小整數。 

Floor(arg):傳回小于或等于參數的最小整數。 

Mod(arg1,arg2):傳回arg1除以arg2的餘數,符号與arg1相同。 

Rand():傳回1到1之間的随機數。 

Power(arg1,arg2):傳回arg1的arg2次方。 

Round(arg1,arg2):四舍五入截斷處理,arg2是位數,如果arg2為負,則對小數點前的數做四舍五入處理。 

Sigh(arg):傳回arg的符号訓示符。-1,0,1表示。 

truncate(arg1,arg2):截斷arg1,arg2是位數,如果arg2是負數,則保留arg1小數點前的arg2位。 

5、其他: 

nullif(arg1,arg2):如果2個參數相等,則傳回null,否則,傳回參數1

本文轉自 王傑瑞 51CTO部落格,原文連結:http://blog.51cto.com/wangjierui/45977,如需轉載請自行聯系原作者

繼續閱讀