DB2常用函數詳解


(一) 字符串函數

  • VALUE函數 

語法:VALUE(EXPRESSION1,EXPRESSION2) 

VALUE函數是用返回一個非空的值,當其第一個參數非空,直接返回該參數的值,如果第一個參數為空,則返回第二個參數的值。

--表示如果T1.ID為空,則返回空串,如果T1.ID不為空,則返回T1.ID。   

eg:SELECT VALUE(ID,'') FROM T1 

PS:空是值為NULL的情況,不包括空字符串‘’

  • COALESCE函數 

語法:COALESCE(ARG1,ARG2...) 

COALESCE返回參數集中第一個非null參數。用法類似於VALUE函數。 

  • LENGTH函數 

語法:LENGTH(ARG) 

LENGTH函數返回參數的長度。

eg:SELECT LENGTH(NAME) FROM T1    

PS:值為NULL時,返回NULL,空字符串‘’返回1

  • LCASE、LOWER函數 

語法:LCASE()、LOWER() 

LCASE、LOWER函數返回定長、變長字符串的小寫形式。

eg: SELECT LCASE(NAME),LOWER(NAME) FROM T1   

  • UCASE、UPPER函數 

語法:UCASE()、UPPER() 

UCASE、UPPER函數返回定長、變長字符串的大寫形式。

eg:SELECT UCASE(NAME),UPPER(NAME) FROM T1   

  • LTRIM、RTRIM函數 

語法:LTRIM()、RTRIM() 

LTRIM、RTRIM函數從CHAR、VARCHAR、GRAPHIC或者VARGRAPHIC中去掉左側或右側的空格。

eg:SELECT LTRIM(NAME),RTRIM(NAME) FROM T1   

  • LEFT、RIGHT函數 

語法:LEFT(ARG,LENGTH)、RIGHT(ARG,LENGTH) 

LEFT、RIGHT函數返回ARG最左邊、右邊的LENGTH個字符串,ARG可以是CHAR或BINARY STRING。

eg:SELECT LEFT(NAME,2),RIGHT(NAME,2) FROM T1  

  • CONCAT函數 

語法:CONCAT(ARG1,ARG2) 

CONCAT函數返回兩個字符串的連接。

eg:SELECT CONCAT(FIRST_NAME,LAST_NAME) FROM T1  

  • INSERT函數 

語法:INSERT(ARG1,POS,SIZE,ARG2) 

INSERT函數返回一個字符串,將ARG1從POS處刪除SIZE個字符,將ARG2插入該位置。

  • LOCATE函數 

語法:LOCATE(ARG1,ARG2,<POS>) 

LOCATE函數在ARG2中查找ARG1第一次出現的位置,如果指定POS,則從ARG2的POS處開始查找ARG1第一次出現的位置。

eg:SELECT LOCATE('a',NAME) FROM T1   

  • POSSTR函數 

語法:POSSTR(EXP1,EXP2) 

POSSTR函數返回EXP2在EXP1中的位置。

eg:SELECT POSSTR(NAME,'a') FROM T1  

  • REPEAT函數 

語法:REPEAT(ARG1,NUM_TIMES) 

REPEAT函數返回ARG1被重復NUM_TIMES次的字符串。

eg:SELECT REPEAT(NAME,2) FROM T1 

  • REPLACE函數 

語法:REPLACE(EXP1,EXP2,EXP3) 

REPLACE函數用EXP3代替EXP1中所有的EXP2。

eg:SELECT REPLACE('ROMANND','NND','CCB') FROM T1  

  • SPACE函數 

語法:SPACE(SIZE) 

SPACE函數返回一個包含SIZE個空格的字符串。

eg:SELECT SPACE(10) FROM T1 

  • SUBSTR函數 

語法:SUBSTR(ARG1,POS,<LENGTH>) 

SUBSTR函數返回ARG1中POS位置開始的LENGTH個字符,如果沒有指定LENGTH,則返回剩余的字符。

eg:SELECT SUBSTR('CDNJFDJFJD',5,2) FROM T1  

(二) 類型轉換函數

  • CAST表達式用來轉換類型使用

SELECT CAST(CURRENT TIME AS CHAR(8) ) FROM SYSIBM.SYSDUMMY1 

  1. 轉換為字符串類型: 
  • CHAR函數 

語法:CHAR(ARG) 

CHAR函數返回日期時間型、字符串、整數、十進制或雙精度浮點數的字符串表示。

eg:SELECT CHAR(SALARY) FROM TEST   

  • CHR函數 

語法:CHR(ARG) 

CHR函數返回由參數指定的ASCII碼的字符,參數可以是INTEGER或SMALLINT。

eg:SELECT CHR(167) FROM TEST   

  • VARCHAR函數 

語法:VARCHAR(ARG,LENGTH) 

VARCHAR函數返回字符串、日期型、圖形串的可變長度的字符串表示。

--50為截取長度,如果name字符串的長度大於50,則返回“SQL0445W 值已被截斷。SQLSTATE=01004”。  

eg:SELECT VARCHAR(NAME,50) FROM TEST   

  • DIGITS函數 

語法:DIGITS() 

DIGITS函數返回SMALLINT、INTEGER、BIGIT或者DECIMAL參數的字符串值。

eg:SELECT DIGITS(ID) FROM TEST

  1. 轉換為數字類型: 
  • DOUBLE、FLOAT函數 

語法:DOUBLE()、FLOAT() 

DOUBLE、FLOAT函數如果參數是一個數字表達式,返回與其對應的浮點數,否則返回錯誤代碼。

eg: SELECT DOUBLE('4569') FROM TEST

  • INT函數 

語法:INT() 

INT函數返回整型常量中的數字、字符串或者日期、時間的整數表示。

eg: SELECT INT('111') FROM TEST

  • BIGINT函數 

語法:BIGINT() 

BIGINT函數返回整型常量中的數字、字符串或者時間戳的64位長整數表示。

eg:SELECT BIGINT('111') FROM TEST

  • SMALLINT函數 

語法:SMALLINT() 

SMALLINT函數返回整型常量中的數字、字符串短整數表示。

eg:SELECT SMALLINT('111') FROM TEST

  • REAL函數 

語法:REAL() 

REAL函數返回一個數值的單精度浮點數表示。

eg:SELECT REAL(10) FROM TEST

  • DEC[IMAL]函數 

語法:DEC[IMAL]() 

DEC[IMAL]函數返回一個數值、DECIMAL的字符串、INTEGER的字符串、FLOAT-POINT的字符串、日期、時間或時間戳的DECIMAL數值。

eg:SELECT DEC(10) FROM TEST

  • HEX函數 

語法:HEX() 

HEX函數返回一個字符串的值的16進制表示。

eg:SELECT HEX(10) FROM TEST

  • FLOOR函數 

語法:FLOOR() 

FLOOR函數小於或等於參數的最大整數。

eg:SELECT FLOOR(10.50) FROM TEST  

(三) 日期時間函數

  • DATE函數 

語法:DATE(ARG) 

DATE函數返回一個日期、時間戳、日期字符串、時間戳字符串中的日期。

eg:SELECT DATE('2017-5-20 14:40:00') FROM TEST  

  • TIME函數 

語法:TIME(ARG) 

TIME函數返回一個時間、時間戳或一個時間、時間戳字符串參數的時間。

eg:SELECT TIME('2005-06-12 16.24.18.121212') FROM TEST  

  • TIMESTAMP函數 

語法:TIMESTAMP(EXPRES1[,EXPRES2]) 

TIMESTAMP函數返回一個或兩個參數中的時間戳。

eg:SELECT TIMESTAMP('2005-06-12 16.24.18.121212') FROM TEST  

注:如果只有一個參數,這個參數必須是一個時間戳或一個時間戳字符串;如果有兩個參數,第一個參數必須是一個日期或日期字符串,第二個參數必須是一個時間或時間戳字符串。 

  • YEAR函數 

語法:YEAR(ARG) 

YEAR函數返回一個日期、時間戳、日期字符串、時間戳字符串的年部分。

eg:SELECT YEAR('2005-06-12') FROM TEST  

  • MONTH函數 

語法:MONTH(ARG) 

MONTH函數返回一個日期、時間戳、日期字符串、時間戳字符串的月部分。

eg:SELECT MONTH('2005-06-12') FROM TEST  

  • QUARTER函數 

語法:QUARTER(ARG) 

QUARTER函數返回一個日期、時間戳、日期字符串、時間戳字符串的季度部分。

eg:SELECT QUARTER(CURRENT DATE) FROM TEST  

  • WEEK函數 

語法:WEEK(ARG) 

WEEK函數返回一個日期、時間戳、日期字符串、時間戳字符串的星期部分。

eg:SELECT WEEK(CURRENT DATE) FROM TEST  

  • DAY函數 

語法:DAY(ARG) 

DAY函數返回一個日期、時間戳、日期字符串、時間戳字符串的日部分。

eg:SELECT DAY(CURRENT DATE) FROM TEST  

  • HOUR函數 

語法:HOUR(ARG) 

HOUR函數返回一個日期、時間戳、日期字符串、時間戳字符串的小時部分。

eg:SELECT HOUR(CURRENT TIME) FROM TEST  

  • MINUTE函數 

語法:MINUTE(ARG) 

MINUTE函數返回一個日期、時間戳、日期字符串、時間戳字符串的分鍾部分。

eg:SELECT MINUTE(CURRENT TIME) FROM TEST  

  • SECOND函數 

語法:SECOND(ARG) 

SECOND函數返回一個日期、時間戳、日期字符串、時間戳字符串的秒部分。

eg:SELECT SECOND(CURRENT TIME) FROM TEST  

  • DAYS函數 

語法:DAYS(ARG) 

DAYS函數返回一個日期、時間戳、日期字符串、時間戳字符串的日期整數表示法,從0001-01-01以來的天數。

eg:SELECT DAYS(CURRENT TIME) FROM TEST  

  • DAYOFYEAR函數 

語法:DAYOFYEAR(ARG) 

DAYOFYEAR函數返回一個日期、時間戳、日期字符串、時間戳字符串在年內的天值。

eg:SELECT DAYOFYEAR(CURRENT DATE) FROM TEST  

PS:URRENT DATE表示當前時間。

  • DAYOFWEEK函數 

語法:DAYOFWEEK(ARG) 

DAYOFWEEK函數返回一個日期、時間戳、日期字符串、時間戳字符串在周內的天值(從周日開始 1 到 7 )。

eg:SELECT DAYOFWEEK(CURRENT DATE) FROM TEST  

PS:從周日開始算。

  • DAYOFWEEK_ISO函數 

語法:DAYOFWEEK_ISO(ARG) 

DAYOFWEEK_ISO函數返回一個日期、時間戳、日期字符串、時間戳字符串在周內的天值(從周一開始 1 到 7 )。 

eg:SELECT DAYOFWEEK_ISO(CURRENT DATE) FROM TEST  

PS:從周一開始算。

  • DAYNAME函數 

語法:DAYNAME(ARG) 

DAYNAME函數返回一個日期、時間戳、日期字符串、時間戳字符串是星期幾。

eg:SELECT DAYNAME(CURRENT DATE) FROM TEST  

  • MONTHNAME函數 

語法:MONTHNAME(ARG) 

MONTHNAME函數返回一個日期、時間戳、日期字符串、時間戳字符串的月份名。

eg:SELECT MONTHNAME(CURRENT DATE) FROM TEST  

  • MIDNIGHT_SECONDS函數 

語法:MIDNIGHT_SECONDS(ARG) 

MIDNIGHT_SECONDS函數返回午夜和參數指定的時間值之間的秒數,用范圍再 0 到 86400 之間的整數值表示。

eg:SELECT MIDNIGHT_SECONDS(CURRENT TIME) FROM TEST


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM