DB2数据库常用函数汇总
DB2常用函數
AVG 返回平均值
語法:
?????????? .-ALL------.
>>-AVG--(--+----------+--expression--)-------------------------><
?????????? '-DISTINCT-'
說明:
此函數,用于返回所查列的平均值,返回值類型跟原有字段類型相同,如果所求字段為integer類型,則返回平均值的整數部分。
如果所查記錄中有空值null,則不計算該條數(如:所查字段有十條記錄,其中有一條此字段為null,則只求9個字段的平均值);可以使用distinct,平均值是去掉重復行后求平均值。
例:
SELECT AVG(PRSTAFF)
???? INTO :AVERAGE
???? FROM PROJECT
???? WHERE DEPTNO = 'D11'
?? SELECT AVG(DISTINCT PRSTAFF)
???? INTO :ANY_CALC
???? FROM PROJECT
???? WHERE DEPTNO = 'D11'
COUNT
?????????????? .-ALL------.
>>-COUNT--(--+-+----------+--expression-+--)-------------------><
???????????? | '-DISTINCT-'???????????? |
???????????? '-*------------------------'
返回結果行數,通常用*,所有行總數
如果指定具體字段,count(字段名),這個字段如果是integer,則為null值的行,不記錄行數;
可以使用distinct,則計算去掉重復行后的記錄行數,此時,指定的字段類型不能是:LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK, XML, 返回的值,同樣不記錄有null的行數
如果使用all 參數,則指定的字段值也不記錄null行數
例:
? SELECT COUNT(*)
???? INTO :FEMALE
???? FROM EMPLOYEE
???? WHERE SEX = 'F'
?? SELECT COUNT(DISTINCT WORKDEPT)
???? INTO :FEMALE_IN_DEPT
???? FROM EMPLOYEE
???? WHERE SEX = 'F'
COUNT_BIG
?????????????????? .-ALL------.
>>-COUNT_BIG--(--+-+----------+--expression-+--)---------------><
???????????????? | '-DISTINCT-'???????????? |
???????????????? '-*------------------------'
COUNT_BIG 的用法與 COUNT 函數類似。兩個函數唯一的差別是它們的返回值。COUNT_BIG 始終返回 bigint 數據類型值。COUNT 始終返回int數據類型值
返回結果行數,通常用*,所有行總數
如果指定具體字段,count(字段名),這個字段如果是integer,則為null值的行,不記錄行數;
可以使用distinct,則計算去掉重復行后的記錄行數,此時,指定的字段類型不能是:
LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK, XML, 返回的值,同樣不記錄有null的行數
如果使用all 參數,則指定的字段值也不記錄null行數
MAX
?????????? .-ALL------.
>>-MAX--(--+----------+--expression--)-------------------------><
?????????? '-DISTINCT-'
返回最大值,其所查字段類型要求為內置類型,不能是LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK
例:
?? SELECT MAX(SALARY) / 12
???? INTO :MAX_SALARY
???? FROM EMPLOYEE
MIN
?????????? .-ALL------.
>>-MIN--(--+----------+--expression--)-------------------------><
?????????? '-DISTINCT-'
返回最小值,其所查字段類型要求為內置類型,但不能是LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK
例:
? SELECT MAX(COMM) - MIN(COMM)
???? INTO :COMM_SPREAD
???? FROM EMPLOYEE
???? WHERE WORKDEPT = 'D11'
SUM
?????????? .-ALL------.
>>-SUM--(--+----------+--expression--)-------------------------><
?????????? '-DISTINCT-'
求和運算,參數類型要求內置數值類型。
例:
?? SELECT SUM(BONUS)
???? INTO :JOB_BONUS
???? FROM EMPLOYEE
???? WHERE JOB = 'CLERK'
ABS 或ABSVAL
>>-+-ABS----+--(--expression--)--------------------------------><
?? '-ABSVAL-'
返回絕對值,參數類型要求為內置數值類型
APPLICATION_ID
>>-APPLICATION_ID--(--)----------------------------------------><
返回當前應用連接信息,如(172.20.50.68.43274.090326055156)
例:
SELECT APPLICATION_ID() AS APPL_ID FROM SYSIBM.SYSDUMMY1
ASCII
>>-ASCII--(--expression--)-------------------------------------><
返回字符串最左邊的字符的ASCII,如果參數類型為graphic string ,轉換成character string進行處理,對于varchar ,最大長度限制為4000byte;clob 最大長度限制為1048576 bytes;long varchar類型 先轉換成clob處理
返回結果始終為integer
CHR
>>-CHR--(--expression--)---------------------------------------><
功能:返回參數指定的ASCII的字符
BIGINT
>>-BIGINT--(--+-numeric-expression---+--)----------------------><
????????????? +-character-expression-+
????????????? '-datetime-expression--'
將參數轉換成64 bit integer類型,參數可以是內置數值類型、character、datetime。
numeric-expression
內置數值類型,如果帶有小數部分的數字類型(如decimal),則返回值會去掉小數部分。
character-expression
要求由阿拉伯數字組成的字符串,中間不能有空串,才能轉換
datetime-expression
DATE返回格式為yyyymmdd
TIME返回格式為hhmmss0
TIMESTAMP返回格式為yyyymmddhhmmss
CEILING? or CEIL
>>-+-CEILING-+--(--expression--)-------------------------------><
?? '-CEIL----'
返回大于或等于expression的最小整數,參數要求為內置數值類型
例:
Values(ceiling(213.4))?? 返回:214
FLOOR
>>-FLOOR--(--expression--)-------------------------------------><
功能:返回小于或等于 expression 的最大整數。
參數 :要求為內置數字類型。
例:
? values(floor(3.5)) 返回:3
? values(floor(-4.5)) 返回:-5
CHAR
Character to Character:
>>-CHAR--(--character-expression--+------------+--)------------><
????????????????????????????????? '-,--integer-'
?
Datetime to Character:
>>-CHAR--(--datetime-expression--+--------------+--)-----------><
???????????????????????????????? '-,--+-ISO---+-'
????????????????????????????????????? +-USA---+
????????????????????????????????????? +-EUR---+
????????????????????????????????????? +-JIS---+
????????????????????????????????????? '-LOCAL-'
?
Integer to Character:
>>-CHAR--(--integer-expression--)------------------------------><
?
Decimal to Character:
>>-CHAR--(--decimal-expression--+----------------------+--)----><
?????????????????????????????? '-,--decimal-character-'
?Floating-point to Character:
>>-CHAR--(--floating-point-expression--------------------------->
?>--+----------------------+--)---------------------------------><
?? '-,--decimal-character-'
有五種不同類型轉換成character類型:character、datetime、integer、decimal、floating-point
到character轉換,如果指定長度,則按固定長度截取字符,不夠長,則在右邊補空格。(參數為CHAR, VARCHAR, LONG VARCHAR, or CLOB類型)
datetime 到character轉換,參數類型可為:date, time, or timestamp可支持時間標準:ISO、USA、EUR、JIS、LOCAL。
integer 到character轉換,參數類型可為:SMALLINT, INTEGER, or BIGINT
smallint 返回6位長字符串,integer返回11位長字符串,bigint返回20位長字符串, 不夠長就在右邊補空格。
decimal 到 character轉換,轉換過程中,如字段字義類似decimal(5,5),則轉換過程中,整數部分的0則不轉換,位數不夠,則在右邊補0。
floating-point到character,參數類型可為DOUBLE or REAL,轉換成以科學記數法顯示字符,并且長度固定為24位(char(24)),不夠24位,則在右邊補空格
例55,則顯示5.5E1
CHARACTER_LENGTH
>>-+-CHARACTER_LENGTH-+----------------------------------------->
?? '-CHAR_LENGTH------'
?
>--(--expression--+-USING--+-CODEUNITS16-+-+--)----------------><
????????????????? |??????? +-CODEUNITS32-+ |
????????????????? |??????? '-OCTETS------' |
????????????????? '-,--+-CODEUNITS16-+-----'
?????????????????????? +-CODEUNITS32-+
?????????????????????? '-OCTETS------'
功能:返回指定字符串的長度,要求指定字符串是內置character or graphic string.
注:此函數與length功能類似,區別是length可以求數值類型、時間、和binary 串
LENGTH
>>-LENGTH--(--expression--+--------------------+--)------------><
????????????????????????? '-,--+-CODEUNITS16-+-'
?????????????????????????????? +-CODEUNITS32-+
?????????????????????????????? '-OCTETS------'
功能:返回指定參數固有或分配的長度;具體字符串長度,跟數據庫的編碼方式有關,CODEUNITS16, CODEUNITS32, or OCTETS
參數:為內置類型。
下面是不同類型返回長度:
2 for small integer
4 for large integer
(p/2)+1 for decimal numbers with precision p
The length of the string for binary strings
The length of the string for character strings
4 for single-precision floating-point
8 for double-precision floating-point
4 for date
3 for time
10 for timestamp
CLOB
>>-CLOB--(--character-string-expression--+------------+--)-----><
???????????????????????????????????????? '-,--integer-'
將字符串類型轉換成CLOB類型,轉換過程中,如果指定截取長度,則截取左邊指定長度的字符串不夠則按實際長度算,如果未指定長度,則都按實際長度算。在Unicode database數據庫中,如果為graphic string,則先轉換成character string,再執行函數。
COALESCE
???????????????????????????????? .---------------.
??????????? (1)????????????????? V?????????????? |
>>-COALESCE-------(--expression----,--expression-+--)----------><
功能:如果第一個參數為null,則返回第二個參數值,否則返回第一個參數值,要求兩個參數類型一至。
例:
? SELECT DEPTNO, DEPTNAME, COALESCE(MGRNO, 'ABSENT'), ADMRDEPT
???? FROM? DEPARTMENT
NULLIF
>>-NULLIF--(--expression--,--expression--)---------------------><
功能:判斷兩個參數是否相等,如果相等,則返回null,否則返回第一個參數值
參數:要求兩參數存在可比性,要求為內置類型數據(除了long string or DATALINK類型數據外)
例:
values(nullif('fff','fff'))? 返回:null
values(nullif(1232,4332))??? 返回:1232
VALUE
>>-VALUE--(--expression----,expression-+--)--------------------><
功能:判斷第一個參數是否為null,如果不為null,則返回第一個參數值,如果為null,則返回第二個參數值。
參數:要求兩個參數為字符串
注:跟COALESCE函數功能相似。
例:
values(value('dfsf','dbe'))??? 返回:dfsf
BLOB
>>-BLOB--(--string-expression--+------------+--)---------------><
?????????????????????????????? '-,--integer-'
功能:將character string, graphic string, or a binary string類型串轉換成blob類型;轉換過程中,可以指定要轉換的長度,如果未指定,則按實際長度輸出。
例:
values(blob('132', 2)) ,結果為13
GRAPHIC
Graphic to Graphic:
>>-GRAPHIC--(--graphic-expression--+------------+--)-----------><
?????????????????????????????????? '-,--integer-'
Character to Graphic:
>>-GRAPHIC--(--character-expression--)-------------------------><
Datetime to Graphic:
>>-GRAPHIC--(--datetime-expression--+--------------+--)--------><
??????????????????????????????????? '-,--+-ISO---+-'
???????????????????????????????????????? +-USA---+
???????????????????????????????????????? +-EUR---+
???????????????????????????????????????? +-JIS---+
???????????????????????????????????????? '-LOCAL-'
功能:將指定參數轉換成graphic類型,參數分三種類型
Graphic to Graphic:
graphic-expression參數類型為graphic,integer為指定返回長度,長度不夠,則在右邊補空格
例:
values(GRAPHIC(GRAPHIC('130xddd'), 2)) ,返回 13
Character to Graphic:
將character、LONG VARCHAR or CLOB 類型數據轉換成graphic,LONG VARCHAR or CLOB類型最大長度不能超過16336 bytes,返回長度跟參數長度相同。此轉換,不能指定截取長度。
Datetime to Graphic:
將三種時間類型(date、time、timestamp)轉換成graphic,注意,此轉換只能在Unicode database數據庫中進行。三種轉換,都有缺省長度
Date: 返回長度為10
Time: 返回長度為8
Timestamp:返回長度為26
例:
values(graphic(current date))?? 返回:2009-04-02
values(graphic(current time))?? 返回:17.31.18
values(graphic(current timestamp))? 返回:2009-04-02-17.29.04.584613
HEX
>>-HEX--(--expression--)---------------------------------------><
功能:將數字類型數據轉換成十六進制表示的字符串
參數:要求內制數字類型
例:
values (hex(536)) 返回:18020000
DATE
>>-DATE--(--expression--)--------------------------------------><
功能:返回日期
參數類型:date、 timestamp、小于或等于3652059的正數、表示法和date與timestamp相同的字符串、七位阿拉伯數字串(此串不能是:CLOB, LONG VARCHAR, DBCLOB, or LONG VARGRAPHIC類型)
例1:參數為date 或timestmp
返回當前日期
values (date(current date))
values (date(current timestamp))
例2:參數為字符串
values (date('2009-01-03'))? 返回:2009-1-3
values (date('03.05.2008'))? 返回:2008-5-3
例3:參數為七位啊拉佰字符串
values (date('2010060'))? 返回:2010-3-1
說明:2010表示年,060表示天數,此處返回日期表示為離2010年1月1日后60天的日期
例4:為整數
values(date(35))?? 返回:0001-2-4
表示離公元元年的1月1日后35天的日期
如:
values(date(366))? 返加:0002-1-1
HOUR
>>-HOUR--(--expression--)--------------------------------------><
功能:返回時間中小時部分的值,返回類型:large integer
參數:a time, timestamp, time duration, timestamp duration, or a valid character string表示符合a time or timestamp格式,但不能是a CLOB nor a LONG VARCHAR類型;在Unicode database數據庫中,支持graphic string,他是先將graphic string轉換成character,再執行函數轉換的。
例:
values hour('16:35:32')??? 返回:16
DAY
>>-DAY--(--expression--)---------------------------------------><
功能:返回日期部分(不包含年、月和時間)值,返回類型為large integer
參數類型:date、 timestamp、date duration、timestamp duration、表示格式和date與timestamp相同的字符串,但不能是 CLOB 和 LONG VARCHAR類型串, 也可以是graphic string(處理是先轉換成character,再執行函數)
例:
values (day('2009-1-3'))
返回:3
values (day('2009-3-20 0:00:00'))
返回:20
values day(current timestamp)
返回當前日
DAYS
>>-DAYS--(--expression--)--------------------------------------><
功能:返回指定日期離0001-1-1之間的天數,返回類型為整型。
參數類型:date、 timestamp、表示法和date與timestamp相同的字符串(但不能是 CLOB 和 LONG VARCHAR類型串)、也可以是graphic string(處理是先轉換成character,再執行函數)
例:
values days('0001-02-06')?? 返回:37
例:用于計算兩個日期之間相差天數(要取絕對值,否則有負數)
values (days('2009-03-03') - days('2009-01-03'))?? 返回:59
DAYOFWEEK
>>-DAYOFWEEK--(--expression--)---------------------------------><
功能:返回日期在本周的第幾天,星期日為1,開始排,星期六為7,返回值類型為integer
參數類型:date、 timestamp、表示法和date與timestamp相同的字符串(但不能是 CLOB 和 LONG VARCHAR類型串)、也可以是graphic string(處理是先轉換成character,再執行函數)
例:values DAYOFWEEK('2009-03-20')?? 返回6
DAYOFWEEK_ISO
>>-DAYOFWEEK_ISO--(--expression--)-----------------------------><
功能:返回日期在本周的第幾天,星期一為1,開始排,星期日為7,返回值類型為integer
參數類型:date、 timestamp、表示法和date與timestamp相同的字符串(但不能是 CLOB 和 LONG VARCHAR類型串)、也可以是graphic string(處理是先轉換成character,再執行函數)
例:values DAYOFWEEK('2009-03-20')??? 返回5
DAYOFYEAR
>>-DAYOFYEAR--(--expression--)---------------------------------><
功能:返回指定日期離同一年的1月1日之間的天數,返回值類型為整型,范圍1-366
參數類型:date、 timestamp、表示法和date與timestamp相同的字符串(但不能是 CLOB 和 LONG VARCHAR類型串)、也可以是graphic string(處理是先轉換成character,再執行函數)
例:
values DAYOFYEAR('2009-03-03') 返回:62
JULIAN_DAY
>>-JULIAN_DAY--(--expression--)--------------------------------><
功能:返回 當前 和公元前 4712 年 1 月 1 日(儒略日期歷法的起始時間)之間間隔的天數,返回為integer。
參數:要求為a date, timestamp類型,或者是符合data、timestamp類型的character string類型,但不能是CLOB 和 a LONG VARCHAR類型串。
例:
values(JULIAN_DAY(current timestamp)-JULIAN_DAY('2009-04-2'))
返回當前日期離2009-04-02之間的天數
DBCLOB
>>-DBCLOB--(--graphic-expression--+------------+--)------------><
????????????????????????????????? '-,--integer-'
功能:將graphic 類型轉換成dbclob類型,轉換過程中,可以指定轉換的長度。
參數要求:graphic、character(此類型串先轉換成graphic,再轉換成dbclob),整數參數,用于需要截取字符長度。
注:要求在Unicode database數據庫下才可以用這種轉換方法。
DECIMAL
Numeric to Decimal:
>>-+-DECIMAL-+--(--numeric-expression--------------------------->
?? '-DEC-----'
?
>--+--------------------------------------------+--)-----------><
?? '-,--precision-integer--+------------------+-'
?????????????????????????? '-,--scale-integer-'
?
Character to Decimal:
>>-+-DECIMAL-+--(--character-expression------------------------->
?? '-DEC-----'
?
>--+----------------------------------------------------------------------+-->
?? '-,--precision-integer--+--------------------------------------------+-'
?????????????????????????? '-,--scale-integer--+----------------------+-'
?????????????????????????????????????????????? '-,--decimal-character-'
?
>--)-----------------------------------------------------------><
Datetime to Decimal:
>>-+-DECIMAL-+--(--datetime-expression-------------------------->
?? '-DEC-----'
?
>--+--------------------------------------------+--)-----------><
?? '-,--precision-integer--+------------------+-'
?????????????????????????? '-,--scale-integer-'
功能:將數值類型、character、Datetime類型數據轉換成decimal類型
Numeric to Decimal
參數說明:要求為數字類型,-precision-integer表示精度,scale-integer表示保留小數位數
注:轉換過程中,precision-integer參數一定要大于或等于現有數據的整數位數。
針對不同數字類型,precision-integer有個默認值:
15 for floating-point and decimal
19 for big integer
11 for large integer
5 for small integer.
Character to Decimal:
參數說明:字符串要求為阿拉佰數字組成的字符串,不能是CLOB和LONG VARCHAR字符類型,字符串中間不能有空格,-precision-integer 表示精度,scale-integer表示保留小數位數;decimal-character表示指定小數點分隔符,此字符不能是阿拉伯數字、“+”、“-”字符
例:
Values (decimal(‘1253’, 5,2)?? 返回1253
Values (decimal(’12.53’, 5,2)?? 返回12.53
values( DECIMAL('2140a050', 9, 2, 'a'))? 返回:2140.05
Datetime to Decimal:
參數說明:參數要求為時間類型(date、time、timestamp)這幾個類型,返回值有缺省精度:
DATE. The result is a DECIMAL(8,0) value representing the date as yyyymmdd.
TIME. The result is a DECIMAL(6,0) value representing the time as hhmmss.
TIMESTAMP. The result is a DECIMAL(20,6) value representing the timestamp as yyyymmddhhmmss.nnnnnn.
注:精度也可以用戶自定義,但一定要保證所需的整數位長度。
values( DECIMAL(current date))
INTEGER
>>-+-INTEGER-+--(--+-numeric-expression---+--)-----------------><
?? '-INT-----'???? +-character-expression-+
?????????????????? +-date-expression------+
?????????????????? '-time-expression------'
功能:將a number, character string, date, or time類型數據轉換成integer,在Unicode database數據庫中,如果參數類型為graphic string,則先轉換成character,再轉換成integer。
參數:要求內置數值類型, character string, date, or time類型;
如果為decimal類型,則返回整數部分值。
字符串型要求符合整型格式,中間不能有空格,參數不能是long tring類型,不能類似decimal類型字符串。
日期類型,則返回成yyyymmdd格式的整型數據。
時間類型,則返加成hhmmss格式的整型數據。
例:
values(integer(4556))? 返回:4556
values(integer(45.56))?? 返回:45
values(integer(date('2009-03-04'))) 返回:20090304
SMALLINT
>>-SMALLINT--(--+-numeric-expression---+--)--------------------><
??????????????? '-character-expression-'
功能:將參數轉成small integer表示
參數:要求內置數值類型,或者符合small integer格式的character string,在Unicode database數據庫中,graphic string類型參數會首先轉換成character string,再執行函數轉換。
注:被轉換的參數,整數部分長度不能超過5位,如果為decimal類型,則只返回整數部分值;字符串之間不能有空格,除首尾空格外,字符串長度不能超過5位。
例:
VALUES (SMALLINT ('? 28821?? ')) 返回:28821
VALUES (SMALLINT (24552.865545585)) 返回:24552
DECRYPT_BIN and DECRYPT_CHAR
>>-+-DECRYPT_BIN--+--------------------------------------------->
?? '-DECRYPT_CHAR-'
?
>--(--encrypted-data--+-------------------------------+--)-----><
????????????????????? '-,--password-string-expression-'
功能:解密,用于解析用ENCRYPT函數加密的數據。
參數:encrypted-data需被解密的數據,類型為CHAR FOR BIT DATA or VARCHAR FOR BIT DATA的數據串;password-string-expression為解密時所使用的口令,此口令是用SET ENCRYPTION PASSWORD設置的口令,在解密時,默認使用此命令調置的口令,在插入數據加密時,如不指定密碼,則默認使用此命令設置的密碼,也可以指定不同的密碼,這時想解析這條記錄,就需要指定對應的口令。
例:
create table test4
(
id integer,
name varchar(20),
pass varchar(24) for bit data
);
set encryption password='xiao1234';
insert into test4(id,name,pass) values (1,'xiao1',encrypt('sddf-dd-g1'))
可用select id,name,DECRYPT_CHAR(pass) from test4 查到數據
insert into test4(id,name,pass)values (2,'xiao2',encrypt('sddf-dd-g4','xiao321',''))
這時就要指定哪些記錄用什么口令,才能夠解析出來
select id,name,DECRYPT_CHAR(pass,'xiao321') from test4 where id=2
select id,name,DECRYPT_CHAR(pass,'xiao1234') from test4 where id=1
ENCRYPT
>>-ENCRYPT------------------------------------------------------>
?
>--(--data-string-expression--+--------------------------------------------------------------+--)-><
????????????????????????????? '-,--password-string-expression--+---------------------------+-'
?????????????????????????????????????????????????????????????? '-,--hint-string-expression-'
功能:加密指定的數據,加密過程中,可以使用SET ENCRYPTION PASSWORD設置默讓密碼,也可以在加密過程中,另外指定密碼,這樣解密時,需要指定對應的密碼才能解密對應的數據。
參數說明:
data-string-expression
需要加密的數據,類型要求為a CHAR or a VARCHAR
password-string-expression
指定加密密碼,類型要求a CHAR or a VARCHAR,長度要求為6 bytes到127 bytes之間,如果不定指,則默認為SET ENCRYPTION PASSWORD設置的密碼。
hint-string-expression
注示,類型要求CHAR or a VARCHAR,最大長度為32bytes
例:
?? CREATE TABLE EMP (SSN VARCHAR(24) FOR BIT DATA);
?? SET ENCRYPTION PASSWORD = 'Ben123';
?? INSERT INTO EMP(SSN) VALUES ENCRYPT('289-46-8832');
INSERT INTO EMP(SSN) VALUES ENCRYPT('289-46-8832','Ben123');
INSERT INTO EMP(SSN) VALUES ENCRYPT('289-46-8832','Pacific','Ocean');
GETHINT
>>-GETHINT--(--encrypted-data--)-------------------------------><
功能:此函數用于獲得在用ENCRYPT加密數據時的第三個注示參數值
參數:encrypted-data類型為CHAR FOR BIT DATA or VARCHAR FOR BIT DATA
例:
CREATE TABLE XZXTEST.TEST4 (
? ID?INTEGER,
? NAME?VARCHAR(20),
? PASS?VARCHAR(50) FOR BIT DATA
)
insert into test4(id,name,pass)values(1,'xiao1',ENCRYPT('282', 'xiao1234','a1'))
SELECT GETHINT(pass) FROM test4;? 返回值:a1?
DIGITS
>>-DIGITS--(--expression--)------------------------------------><
功能:將SMALLINT, INTEGER, BIGINT or DECIMAL.類型數據轉換成字符串,針對不同類型數據,都有一個固定字符串長度,如果不夠長,則在左邊補0(針對SMALLINT, INTEGER, BIGINT類型轉換),decimal類型轉換根據指定的精度,整數位不夠則在左邊補0,小數位不句,則在右邊補0,下面是各類型默認長度
5 if the argument is a small integer
10 if the argument is a large integer
19 if the argument is a big integer
p if the argument is a decimal number with a precision of p.
注:decimal 轉換時,會去掉小數點,而直接將整數部分和小數部分連起來形成串。
values(DIGITS(0.55)) 返回:055
values(DIGITS(1.55))??? 返回:155
REAL
>>-REAL--(--numeric-expression--)------------------------------><
功能:將數值類型轉換成單精度類型表示,為單精度浮點類型。
參數:要求為任何內置數值類型。
單精度浮點數是實數的 32 位近似值。數字可以為零,或者在從 -3.402E+38 到 -1.175E-37 或從 1.175E-37 到 3.402E+38 的范圍內。
DOUBLE
Numeric to Double:
>>-+-DOUBLE-----------+--(--numeric-expression--)--------------><
?? +-FLOAT------------+
?? '-DOUBLE_PRECISION-'
Character String to Double:
>>-DOUBLE--(--string-expression--)-----------------------------><
功能:返回 double類型數據。
參數:內置數字類型或字符串類型,符合數字表示格式的字符串,字符之間不能有空格,字符串不能為空串(‘’),可以為null值
注:在Unicode database數據庫中,對到graphic string,轉換過程中是先轉換成character string,再轉換成 double類型。
例:
Values(double('123.3215'))?? 返回: 123.3215
values(double(7889.546))????? 返回: 7889.546
雙精度浮點數是實數的 64 位近似值。數字可以為零,或者在從 -1.79769E+308 到 -2.225E-307 或從 2.225E-307 到 1.79769E+308 的范圍內
FLOAT
>>-FLOAT--(--numeric-expression--)-----------------------------><
功能:返回floating-point類型數據。
注:與double用法相同,但參數要求為數字類型
EVENT_MON_STATE
>>-EVENT_MON_STATE--(--string-expression--)--------------------><
功能:返回event monitor狀態。
參數:類型要求CHAR or VARCHAR,值為event monitor 名稱;在unicode database數據庫中,graphic string中會先轉換成character string后,再執行函數。
返回值為integer (0,1)
0 表示event monitor不處在活動狀態
1 表示event monitor 處在活動狀態。
例:
?? SELECT EVMONNAME,
???? CASE
?????? WHEN EVENT_MON_STATE(EVMONNAME) = 0 THEN 'Inactive'
?????? WHEN EVENT_MON_STATE(EVMONNAME) = 1 THEN 'Active'
???? END
???? FROM SYSCAT.EVENTMONITORS
values(EVENT_MON_STATE('DB2DETAILDEADLOCK'))?? 返回:1
GENERATE_UNIQUE
>>-GENERATE_UNIQUE--(--)---------------------------------------><
功能:該函數返回當前系統時間戳,我們可以使用該函數為主鍵列生成惟一值;返回數據類型為bit data character string 13 bytes long (CHAR(13) FOR BIT DATA)
例:
CREATE TABLE EMPLOYEE (?SERIALNUMBER?CHAR(13) FOR BIT
?????DATA NOT NULL,
?????FIRSTNAME??CHAR(64),
?????LASTNAME??CHAR(64),
?????SALARY ???DECIMAL(10, 2),
?????PRIMARY KEY (SERIALNUMBER))
然后可以用下面的 SQL 語句插入一行:
INSERT INTO EMPLOYEE (SERIALNUMBER, FIRSTNAME, LASTNAME,
SALARY) VALUES(GENERATE_UNIQUE(), ‘John’, ‘Smith’, 999.99)
優點和問題
這里需要清楚兩件事情。
首先,當多個事務在同一時刻插入行時,GENERATE_UNIQUE() 可能會返回相同的時間戳。在這種情況下,GENERATE_UNIQUE() 不能為每個事務生成一個惟一的返回值,因而這種方法不適合有大量事務的系統。
第二,一旦系統時鐘需要向后調整,那么 GENERATE_UNIQUE() 將可能返回重復的值。
由于上述限制,我決不會在生產系統中使用 GENERATE_UNIQUE()。但是,當您需要在有限的時間內完成一個原型時,這也許是一種選擇。
IDENTITY_VAL_LOCAL
>>-IDENTITY_VAL_LOCAL--(--)------------------------------------><
功能:返回最近identity column字段分配的值,包含所有表中自增字段。
例:
?? CREATE TABLE T1
???? (C1 INTEGER GENERATED ALWAYS AS IDENTITY,
????? C2 INTEGER)
?? CREATE TABLE T2
???? (C1 DECIMAL(15,0) GENERATED BY DEFAULT AS IDENTITY (START WITH 10),
????? C2 INTEGER)
?? INSERT INTO T1 (C2) VALUES (5)
values (IDENTITY_VAL_LOCAL()) 此時返回1
INSERT INTO T2 (C2) VALUES (9)
values (IDENTITY_VAL_LOCAL()) 此時返回? 10
LCASE
>>-LCASE--(--expression--)-------------------------------------><
功能:將 string_exp 中的A-Z字符轉換為小寫字符。
參數:要求為內置字符串類型,對于VARCHAR,最大長度為4000bytes,對于CLOB類型,最大長度為1048576bytes。在Unicode database數據庫中,如果為graphic string,則首先轉換成character string,再執行函數。
例:
values(LCASE('ABCDD_D@F#$SDLF')) 返回:abcdd_d@f#$sdlf
LCASE or LOWER
>>-+-LCASE-+--(--string-expression--)--------------------------><
?? '-LOWER-'
功能:將 string_exp 中的A-Z字符轉換為小寫字符。
參數:要求為內置字符串類型,支持LONG VARCHAR and CLOB類型;在Unicode database數據庫中,如果為graphic string,則首先轉換成character string,再執行函數。
例:
values(LOWER ('DFDI#UYTR@&HTY')) 返回:dfdi#uytr@&hty
UCASE or UPPER
>>-+-UCASE-+--(--expression--)---------------------------------><
?? '-UPPER-'
功能:將參數中的所有小寫字符轉換成大寫
參數:為字符串類型
例:
values(UPPER ('aaaasfdbb&^5aA'))?? 返回:AAAASFDBB&^5AA
INSERT
>>-INSERT--(--expression1--,--expression2--,-------------------->
?
>--expression3--,--expression4--)------------------------------><
功能:在指定的字符串expression1中,從expression2開始,刪除expression3指定長度的字符串,再插入expression4指定的字符串。
參數:expression1、expression4要求為character string or a binary string type,在Unicode database數據庫中,如果是graphic string,他首先轉換成character string再處理;VARCHAR最大長度不能大于4?000 bytes ,CLOB or a binary string 類型,最大長度不能大于1?048?576 bytes;CHAR類型會先轉換成VARCHAR,LONG VARCHAR轉換成 CLOB(1M)進行處理;expression1、expression4兩個參數類型要一致;expression2為數字類型,指定起始位置;expression3為數字類型,指定長度;expression2、expression3兩個參數如果是SMALLINT類型,則會轉換成;
例:
VALUES CHAR(INSERT('DINING', 3, 1, 'VID'), 10) 返回:DIVIDING?
LEFT
>>-LEFT--(--expression1--,--expression2--)---------------------><
功能:返回expression1串中最左邊的expression2個字符。
參數:expression1參數要求為character string or a binary string type;在Unicode database數據庫中,graphic string首先轉換成character,再進行處理;VARCHAR類型,最大長度為4000bytes,CLOB or a binary string最大長度為1048576 bytes,第二個參數為INTEGER or SMALLINT。
例:
values(left ('DFDI#UYTR@&HTY',5)) 返回:DFDI#
RIGHT
>>-RIGHT--(--expression1--,--expression2--)--------------------><
功能:在expression1串中,從右邊開始取expression2個字節字符,要是取完還不夠長,則在所取的字符串右邊補空格。
參數:expression1參數要求為character string or a binary string type,在Unicode database數據庫中,graphic string串會首先轉換成character string,再執行函數,對于VARCHAR,最大長度不能超過4000bytes,對于CLOB or a binary string,最大長度不能超過1048576bytes。第二個參數,要求為INTEGER or SMALLINT。
返回結果類型:
The result of the function is:
VARCHAR(4000) if the first argument is VARCHAR (not exceeding 4?000 bytes) or CHAR
CLOB(1M) if the first argument is CLOB or LONG VARCHAR
BLOB(1M) if the first argument is BLOB.
例:
values(RIGHT ('cxccxd',4))??? 返回:ccxd
values(RIGHT ('cxccxd',9))??? 返回:'cxccxd?? '
LOCATE
>>-LOCATE--(--search-string--,--source-string--+----------+--+--------------------+--)-><
?????????????????????????????????????????????? '-,--start-'? '-,--+-CODEUNITS16-+-'
????????????????????????????????????????????????????????????????? +-CODEUNITS32-+
????????????????????????????????????????????????????????????????? '-OCTETS------'
功能:在source-string串中,從start位置開始,找出第一次出現search-string的位置,如果沒找到,則返回0;如果search-string長度為0,則返回1,如果source-string長度為0,則返回0。
參數:
search-string
要求為內置字符串類型、graphic string data type, or binary string data type with an actual length that is no greater than 4000 bytes,不能為LONG VARCHAR, CLOB, LONG VARGRAPHIC, or DBCLOB類型
source-string
要求為內置字符串類型、graphic string data type, or binary string data type
Start
要求大于或等于0的integer類型
CODEUNITS16, CODEUNITS32, or OCTETS
如果指定用CODEUNITS16 or CODEUNITS32編碼,而search-string or source-string是binary string or bit data,就會報錯SQLSTATE 428GC;如果指定用OCTETS編碼,source-string和search-string是不同的code page,則,將search-string修改成和source-string一樣,而且search-string or source-string不能是binary strings
例:
values(LOCATE? ('d','abbecedefse',5)) 返回:7
code page???
LONG_VARCHAR
>>-LONG_VARCHAR--(--character-string-expression--)-------------><
功能:將character string 轉換成long varchar 表示法。在Unicode database數據庫中,graphic string是先轉換成character string ,再執行函數轉換。
參數:要求為character string,最大長度32700bytes
LONG_VARGRAPHIC
>>-LONG_VARGRAPHIC--(--graphic-expression--)-------------------><
功能:將雙字節字符串轉換成LONG_VARGRAPHIC表示法
參數:graphic-expression要求為graphic string串,最大長度16?350 double byte characters.
LTRIM(SYSFUN模式)
>>-LTRIM--(--expression--)-------------------------------------><
功能:刪除字符串前面的空格。
參數:內置character string 類型,對于varchar ,最大長度為4000bytes,對于CLOB類型,最大長度為1048576bytes
例:
values(LTRIM('? abbg erthec?? ')) 返回:'abbg erthec?? '
LTRIM(SYSIBM模式)
>>-LTRIM--(--string-expression--)------------------------------><
功能:刪除字符串前面的空格。
參數:CHAR, VARCHAR, GRAPHIC, or VARGRAPHIC,支持LONG VARCHAR and CLOB類型
RTRIM(SYSFUN模式)
>>-RTRIM--(--expression--)-------------------------------------><
功能:去掉字符串尾部空格
參數:要求為內置character string類型,對于VARCHAR最大長度為4000bytes,對于CLOB最大長度為1048576bytes
返回結果類型:
VARCHAR(4000) if the argument is VARCHAR (not exceeding 4?000 bytes) or CHAR
CLOB(1M) if the argument is CLOB or LONG VARCHAR.
例:
values(rtrim ('cxccxd? ')) 返回:'cxccxd'?
RTRIM(SYSIBM模式)
>>-RTRIM--(--string-expression--)------------------------------><
功能:去掉字符串尾部空格
參數:CHAR, VARCHAR, GRAPHIC, or VARGRAPHIC 類型
注:
If the argument is a graphic string in a DBCS or EUC database, then the trailing double byte blanks are removed.
If the argument is a graphic string in a Unicode database, then the trailing UCS-2 blanks are removed.
Otherwise, the trailing single byte blanks are removed.
結果類型:
VARCHAR if the data type of string-expression is VARCHAR or CHAR
VARGRAPHIC if the data type of string-expression is VARGRAPHIC or GRAPHIC
STRIP
>>-STRIP--(--string-expression--+-----------------------------------------+--)-><
??????????????????????????????? '-,--+-BOTH-----+--+--------------------+-'
???????????????????????????????????? +-B--------+? '-,--strip-character-'
???????????????????????????????????? +-LEADING--+
???????????????????????????????????? +-L--------+
???????????????????????????????????? +-TRAILING-+
???????????????????????????????????? '-T--------'
功能:去掉字符串首尾指定的字符,如果不指定,則去掉首和尾部空格。
參數:string-expression參數要求為CHAR, VARCHAR, GRAPHIC, or VARGRAPHIC類型;由參數BOTH, LEADING, or TRAILING指定是去掉開始還是尾部的特定字符,或者都去掉;
例:
values(STRIP ('? dsfghg? ')) 返回: 'dsfghg'
values(STRIP ('0000dsfghg',LEADING,'0')) 返回:'dsfghg'
values(STRIP ('dsfghggg000',TRAILING ,'0')) 返回:'dsfghggg'
values(STRIP ('000adfdejjg000',BOTH ,'0')) 返回:'adfdejjg'
TRIM
>>-TRIM--(--+-----------------------------------------+--string-expression--)-><
??????????? | .-BOTH-----.??????????????????????????? |
??????????? '-+----------+--+-----------------+--FROM-'
????????????? +-B--------+? '-strip-character-'
????????????? +-LEADING--+
????????????? +-L--------+
????????????? +-TRAILING-+
????????????? '-T--------'
功能:去掉字符串首尾指定的字符,如果不指定,則去掉首或尾空格。
參數:BOTH, LEADING, or TRAILING指定去掉首尾、首、尾位置上的指定字符;strip-character指定要去掉的單字符;string-expression目標字符串,類型要求為CHAR, VARCHAR, GRAPHIC, or VARGRAPHIC 數據類型。
注:如果只指定string-expression參數,則默讓支掉首尾空格
例:
values(trim(LEADING 's' from 'sdfsdfdsfs')) 返加dfsdfdsfs
MICROSECOND
功能:返回微秒部分的值
參數:類型要求timestamp, timestamp duration、或是有效的character類型,符合timestamp格式,但不能是CLOB 和 LONG VARCHAR類型;在Unicode database數據庫中,graphic string會先轉換成character string再轉換。
例:
values(MICROSECOND (current timestamp)) 返回當前時間點微秒部分的值。
給定了日期、時間或時間戳,則使用適當的函數可以單獨抽取出(如果適用的話)年、月、日、時、分、秒及微秒各部分:
YEAR (current timestamp)
MONTH (current timestamp)
DAY (current timestamp)
HOUR (current timestamp)
MINUTE (current timestamp)
SECOND (current timestamp)
MICROSECOND (current timestamp)
MIDNIGHT_SECONDS
>>-MIDNIGHT_SECONDS--(--expression--)--------------------------><
功能:返回指定的時間點離00:00:00之間的秒數,返回值為integer類型,值范圍0 到86?400
參數:類型要求time, timestamp或者有效的character string,符合time、timestamp格式,不能是CLOB nor a LONG VARCHAR類型;在Unicode database數據庫中,graphic string類型參數,是產先轉換成character string,再進行處理的。
例:
values(MIDNIGHT_SECONDS('00:10:10')) 返回:610
SECOND
>>-SECOND--(--expression--)------------------------------------><
功能:返回時間中的秒部分的值,返回類型為large integer
參數:要求time, timestamp, time duration, timestamp duration,或者是有效的符合time or timestamp格式的character string,不能為CLOB 和 LONG VARCHAR 類型;在Unicode database數據庫中,如果為graphic string,則首先轉換成character string,再執行函數。
注:
如果參數為time、timestamp、或者有效的time、timestamp字符串,則返回秒部分的值,取值0-59
如果參數為time duration 或 timestamp duration,則結果取值在-99---99
例:
?? VALUES (SECOND('10:37:04')) 返回:4
VALUES (SECOND(time('10:30:04')-time('10:37:04')))? 返回:59
MINUTE
>>-MINUTE--(--expression--)------------------------------------><
功能:返回指定時間的分鐘部分的值,返回類型為large integer
參數:要求time, timestamp, time duration, timestamp duration,或者是有效的character string,要求符合time or timestamp格式,但不能是CLOB 和LONG VARCHAR類型;在Unicode database數據庫中,參數是graphic string類型會被首先轉換成character string再進行函數處理。
例:
values(MINUTE ('13:50:20')) 返回 50
TIME
>>-TIME--(--expression--)--------------------------------------><
功能:返回時間部分值
參數:expression要求為time, timestamp,或者是有效的符合time or timestamp格式的串,但不能是CLOB, LONG VARCHAR, DBCLOB, or LONG VARGRAPHIC串,在Unicode databases數據庫中,對graphic string參數,是首先轉換成character string,再執行函數。
注:
如果參數為time ,則返回time
如果參數為timestamp? 則返回time 部分值
如果參數為string???? 則返回string中time表示的部分
例:
values(time('13:22:32')) 返回:13:22:32
TIMESTAMP
>>-TIMESTAMP--(--expression--+-------------+--)----------------><
???????????????????????????? '-,expression-'
功能:返回timestamp類型值。
參數:如果只指定一個參數,第一個參數,要求為timestamp類型,或者是有效的timestamp格式串,或者是14位長度串(格式要求:yyyyxxddhhmmss),但不能是CLOB, LONG VARCHAR, DBCLOB, or LONG VARGRAPHIC串;如果指定了兩個參數,那么第一個參數要求為date,或者是有效的date格式串,第二個參數一定是時間或有效的time格式串。在Unicode databases數據庫中,對graphic string參數,是首先轉換成character string,再執行函數。
例:
values(timestamp('2009-4-13','12:33:02') ) 返回:2009-4-13 12:33:02
TIMESTAMP_FORMAT
>>-TIMESTAMP_FORMAT--(--string-expression--,format-string--)---><
功能:將timestamp 格式的string-expression串,轉換成format-string格的timestamp
參數:string-expression參數,為character類型的timestamp格式串(符合format-string指定的格式),串長度最大不能超過254;對于'YYYY-MM-DD HH24:MI:SS'這個格式中的月日時分秒的第一位數值可以為0或是空格,也可以一位數據表示。例:'2000-1-01 09:00:00'、'2000- 1-01 09:00:00'、'2000-1-1 09:00:00'都是有效串。format-string參數,用于轉換后的timestamp顯示格式,如'YYYY-MM-DD HH24:MI:SS'
例:
values(TIMESTAMP_FORMAT ('2009-01- 3 12:33:2','YYYY-MM-DD HH24:MI:SS') )
返回:2009-1-3 12:33:02
TIMESTAMP_ISO
>>-TIMESTAMP_ISO--(--expression--)-----------------------------><
功能:將參數轉換成timestamp格式
參數:要求為date, time, or timestamp,或者是date格式的字符串;但不能是CLOB nor a LONG VARCHAR類型;在Unicode database數據庫中,graphic string串會首先轉換成character string,再執行函數。
注:
如果參數只是日期,那么轉換后,結果的time部全是0;如果參數只有time,則結果中的日期部分為當前日期。
例:
values(TIMESTAMP_ISO('2009-04-13'))? 返回:2009-4-13 0:00:00
TIMESTAMPDIFF
>>-TIMESTAMPDIFF--(--expression--,--expression--)--------------><
功能:計算兩時間之間相隔時間,以指定的時間單位顯示數據(如相隔天,月,年,周),結果為integer
參數:第一個參數,指定要顯示的時間單位,為INTEGER 或SMALLINT類型數據(1:Fractions of a second,2:Seconds,4:Minutes ,8:Hours,16:Days,32:Weeks,64:Months,128:Quarters,256:Years );第二個參數,為兩個timestamps類型數據之差,并轉換成char(22),在Unicode database數據庫中,graphic string串會先轉換成character string再執行函數。
注:返回值不能超過十位,否則會報錯。
例:以秒為單位
values(TIMESTAMPDIFF(2,CHAR(TIMESTAMP('2009-04-10-13.11.20.000000') -? TIMESTAMP('2009-04-10-13.10.15.000000'))))
返回:65
MOD
>>-MOD--(--expression1--,--expression2--)------------------------><
功能:求expression1除以expression2的余數
參數:要求兩個參數都為整型
返回結果類型如下:
SMALLINT if both arguments are SMALLINT
INTEGER if one argument is INTEGER and the other is INTEGER or SMALLINT
BIGINT if one argument is BIGINT and the other argument is BIGINT, INTEGER or SMALLINT.
例:
values (mod (6,4))?? 返回:2
MONTH
>>-MONTH--(--expression--)-------------------------------------><
功能:返回時間點中的月份值,返回類型為large integer。
參數:要求為date, timestamp, date duration, timestamp duration類型,或者是有效的character string,要求符合date or timestamp格式,不能是CLOB nor a LONG VARCHAR類型;在Unicode database數據庫中,參數為graphic string,則先轉換成character string,再執行函數。
例:
values (month ('2009-03-05')) 返回:3
MULTIPLY_ALT
>>-MULTIPLY_ALT--(--exact_numeric_expression--,----------------->
?
>--exact_numeric_expression--)---------------------------------><
功能:將第一個參數與第二個參數相乘,產生decimal類型值
參數:兩個參數要求就內置numeric data type (DECIMAL, BIGINT, INTEGER, or SMALLINT).
說明:p1為第一個參數的精度,s1為第一個參數的小數位數,p2為每二個參數據的精度, s2為第二個參數的小數位數,(decimal(p1,s1) , decimal(p2,s2))
通過函數得出的結果:
精度:min(31,p1+p2)
小數位:
0 if the scale of both arguments is 0
MIN(31, s + s') if p + p' is less than or equal to 31
MAX(MIN(3, s + s'), 31 - (p - s + p' - s') ) if p + p' is greater than 31.
例:
values(MULTIPLY_ALT(23.5,25.2))?? 返回:592.2
OCTET_LENGTH
>>-OCTET_LENGTH--(--expression--)------------------------------><
功能:此函數返回輸入字符串的字節長度
參數:要求為內置串數據類型
例:
table T1 has a GRAPHIC(10) column named C1
SELECT OCTET_LENGTH(C1) FROM T1
返回值為20
values(OCTET_LENGTH('dff'))? 返回:3
POSITION
>>-POSITION----------------------------------------------------->
?
>--(--+-search-string--IN--source-string--USING--+-CODEUNITS16-+-+--)-><
????? |????????????????????????????????????????? +-CODEUNITS32-+ |
????? |????????????????????????????????????????? '-OCTETS------' |
????? '-search-string--,--source-string--,--+-CODEUNITS16-+------'
??????????????????????????????????????????? +-CODEUNITS32-+
??????????????????????????????????????????? '-OCTETS------'
功能:返回search-string串第一次在source-string串中出現的位置;如果第一個串在第二個串中未找到,并且兩個參數都不為null,則返回0;如果source-string串長度為0,則返回結果為0;如果search-string串長度為0,source-string串不為空,則返回1。search-string串和source-string串任一個為null,則返回null
參數:
search-string
要求為內置character string、graphic string、binary string(要求不能大于4000bytes),不能為LONG VARCHAR, CLOB, LONG VARGRAPHIC, or DBCLOB類型串。
expression can be specified by any of the following:
A constant
A special register
A host variable
A scalar function whose operands are any of the above
An expression that concatenates (using CONCAT or ||) any of the above
An SQL procedure parameter
source-string
要求為內置character string、graphic string、binary string
expression can be specified by any of the following:
A constant
A special register
A host variable (including a locator variable or a file reference variable)
A scalar function
A large object locator
A column name
An expression that concatenates (using CONCAT or ||) any of the above
CODEUNITS16, CODEUNITS32, or OCTETS
指定字符的編碼格式。
CODEUNITS16 使用UTF-16
CODEUNITS32??? 使用UTF-32
OCTETS????????? 使用bytes
例:
values (POSITION('fs' in 'dsfsfsd' using CODEUNITS16 )) 返回:3
POSSTR
>>-POSSTR--(--source-string--,--search-string--)---------------><
功能:返回search-string串第一次在source-string串中出現的位置
參數:任一參數為null,則返加null,兩數據不能為LONG VARCHAR, CLOB, LONG VARGRAPHIC or DBCLOB類型串,search-string參數不能大于4000bytes
source-string
The expression can be specified by any one of:
A constant
A special register
A host variable (including a locator variable or a file reference variable)
A scalar function
A large object locator
A column name
An expression concatenating any of the above
search-string
The expression can be specified by any one of:
A constant
A special register
A host variable
A scalar function whose operands are any of the above
An expression concatenating any of the above
An SQL procedure parameter
注:如果兩參數為character or binary strings串,則結果指的是字節的位置;如果為graphic strings,則返回的為字符的位置;兩個參數的類型要一至;如果search-string串長度為0,則返回1;
如果source-string長度為0,則返回0;
例:
values (POSSTR('adsfhjkhj','dsf')) 返回:2
POWER
>>-POWER--(--expression1--,--expression2--)--------------------><
功能:求expression1的expression2次方值
參數:要求兩參數都為內置數值類型
返回結果類型:
INTEGER if both arguments are INTEGER or SMALLINT
BIGINT if one argument is BIGINT and the other argument is BIGINT, INTEGER or SMALLINT
DOUBLE otherwise.
例:
values(power(5,3)) 返回:125
QUARTER
>>-QUARTER--(--expression--)-----------------------------------><
功能:返回指定日期所在的季度,取值為1到4
參數:要求為date, timestamp,或者為有效的character string,符合date or timestamp格式串,不能為CLOB nor a LONG VARCHAR類型串。在Unicode database數據庫中,graphic string串會首先轉換成character string,再執行函數轉換。
例:
values(QUARTER('2009-06-30')) 返回:2
RAND
>>-RAND--(--+------------+--)----------------------------------><
??????????? '-expression-'
功能:使用 expression 作為種子值返回一個隨機浮點值。返回值在0到1之間
參數:要求內置SMALLINT or INTEGER類型數據。
例:
values(RAND(4)) 返回:0.887499926559394
REPEAT
>>-REPEAT--(--expression1--,--expression2--)---------------------><
功能:返回expression1參數重復expression2次連接后的串。
參數:expression1參數要求為character string or binary string type,對于VARCHAR串不能超過4000bytes,對于CLOB or a binary string最大不能超過1048576bytes
返回結查類型:
VARCHAR(4000) if the first argument is VARCHAR (not exceeding 4?000 bytes) or CHAR
CLOB(1M) if the first argument is CLOB or LONG VARCHAR
BLOB(1M) if the first argument is BLOB.
例:
values(REPEAT('cxccsd ',5)) 返回:cxccsd cxccsd cxccsd cxccsd cxccsd
REPLACE
>>-REPLACE--(--expression1--,--expression2--,--expression3--)--><
功能:將expression1中包含的expression2的串都替換成expression3串。
參數:expression1參數要求為內置character string or binary string type,在Unicode database數據庫中,graphic string會首先轉換成character string,再執行替換;對于VARCHAR串,最大長度不能超過4000bytes,CLOB or a binary string串,最大長度不能超過1048576bytes;對于char轉換成varchar,對于LONG VARCHAR轉換成CLOB(1M).后再替換。第二個參數和第三個參數是同樣規則。
返回結果類型:
The result of the function is:
VARCHAR(4000) if the first, second, and third arguments are VARCHAR or CHAR
CLOB(1M) if the first, second, and third arguments are CLOB or LONG VARCHAR
BLOB(1M) if the first, second, and third arguments are BLOB.
例:
values(REPLACE('cxccxd ','x','aaa')) 返回:caaaccaaad
ROUND
>>-ROUND--(--expression1--,--expression2--)--------------------><
功能:返回將 expression1 四舍五入到小數點右邊第 expression2 位后的值。如果 expression2 為負數,則將 expression1在左邊第 |expression2| 位做四舍五入。 1、如兩參數都為正數,則返回結果是expression1參數小數點后保留expression2位,并做四舍五入運算。2、如果expression2為負數,則返回expression1在左邊第 |expression2| 位做四舍五入運算后的結果,如果expression2絕對值加1大于expression2整數位,并做四啥五入運算,結果expression2絕對值加1位上的值為0,則返回0值。
參數:
expression1 要求為內置數值類型,expression2要求為small or large integer
例:
?? VALUES (
???? ROUND(873.726, 2),
???? ROUND(873.726, 1),
???? ROUND(873.726, 0),
???? ROUND(873.726,-1),
???? ROUND(873.726,-2),
???? ROUND(873.726,-3),
???? ROUND(873.726,-4) )
返回結果:
1???????? 2???????? 3???????? 4???????? 5???????? 6???????? 7
--------- --------- --------- --------- --------- --------- ---------
? 873.730?? 873.700?? 874.000?? 870.000?? 900.000? 1000.000???? 0.000
??
VALUES (
???? ROUND(3.5, 0),
???? ROUND(3.1, 0),
???? ROUND(-3.1, 0),
???? ROUND(-3.5,0) )
返回結果:
1??? 2??? 3??? 4
---- ---- ---- ----
?4.0? 3.0 -3.0 -4.0
TRUNCATE or TRUNC
>>-+-TRUNCATE-+--(--expression1--,--expression2--)-------------><
?? '-TRUNC----'
功能:返回將 expression1 截至小數點右第 expression2 位后的值。如果expression2 為負數,則將 expression1 截至小數點左邊第 |integer_exp| 位,被截取的整數部分用替換成0(不做四舍五入運算)。
參數:expression1為內置數值類型,expression2為small 或a large integer類型
例:
values(TRUNCATE (356594.2254,-2))? 返回:356500
values(TRUNCATE (356594.2254,2))??? 返回:356594.22
SIGN
>>-SIGN--(--expression--)--------------------------------------><
功能:返回標記-1、0、1,判斷參數是負數、0、還是正數,如果為負數則返加-1,如果為0,則返回0,如果為正數,則返回1
參數:要求為內置數值類型。
例:
VALUES (sign(2.5)) 返回:1
VALUES (sign(0))????? 返回:0
VALUES (sign(-254))? 返回:-1
SPACE
>>-SPACE--(--expression--)-------------------------------------><
功能:返回參數指定數量的空格字符,最大不能超過4000個字符
參數:SMALLINT or INTEGER類型
SQRT
>>-SQRT--(--expression--)--------------------------------------><
功能:返回平方根,結果為double-precision floating-point類型
參數:內置數值類型
例:
VALUES (SQRT (400)) 返回:20
SUBSTR
>>-SUBSTR--(--string--,--start--+-----------+--)---------------><
??????????????????????????????? '-,--length-'
功能:從string串中,start指定的位置取length長度的字符串
參數:string 要求為character string 、 a binary string、graphic string;start為整型,取值范圍1到string串實際長度,指定起始的字符位置;length為整型,取值范圍0到(the length attribute of string或者是字段定義長度) - start + 1
values(substr('dfdgssaa',3,5)) 返回:dgssa
SUBSTRING
>>-SUBSTRING--(------------------------------------------------->
?
>--+-expression--FROM--start--+-------------+--USING--+-CODEUNITS16-+-+-->
?? |????????????????????????? '-FOR--length-'???????? +-CODEUNITS32-+ |
?? |????????????????????????????????????????????????? '-OCTETS------' |
?? '-expression--,--start--+-----------+--,--+-CODEUNITS16-+----------'
?????????????????????????? '-,--length-'???? +-CODEUNITS32-+
???????????????????????????????????????????? '-OCTETS------'
?
>--)-----------------------------------------------------------><
功能:從string串中,start指定的位置取length長度的字符串
參數:expression要求為內置串類型;start為整型,可以為負數、0、正數;length為整型,取值范圍0到(the length attribute of string或者是字段定義長度) - start + 1;(CODEUNITS16、CODEUNITS32、OCTETS)為指定生成的字串使用的編碼格式。
注:如果expression為graphic data,指定用OCTETS編碼,那么start值一定要是奇數,長度要求為偶數,不然為會報SQLSTATE 428GC錯誤;如果expression為binary string,指定使用(CODEUNITS16、CODEUNITS32)編碼,就會返回SQLSTATE 428GC錯誤;
例:
values(SUBSTRING('sdfdfsa',2,3,CODEUNITS32))? 返回:dfd
values(SUBSTRING('sdfdfsa',0,3,CODEUNITS32)) 返回:sd
values(SUBSTRING('sdfdfsa',-2,4,CODEUNITS32)) 返回:s
CONCAT
>>-CONCAT-------(--expression1--,--expression2--)--------------><
功能:將兩個字符串連接起來,如果兩個參數中,有任一為null,則返加null。
例:
values(CONCAT('cxccxd','tttt'))? 返回:cxccxdtttt
TO_CHAR
>>-TO_CHAR--(--timestamp-expression--,format-string--)---------><
同VARCHAR_FORMAT.函數用法相同
TO_DATE
>>-TO_DATE--(--string-expression--,format-string--)------------><
同TIMESTAMP_FORMAT函數用法相同
VARCHAR
Character to Varchar:
>>-VARCHAR--(--character-expression--+------------+--)---------><
???????????????????????????????????? '-,--integer-'
?Graphic to Varchar:
>>-VARCHAR--(--graphic-expression--+------------+--)-----------><
?????????????????????????????????? '-,--integer-'
?Datetime to Varchar:
>>-VARCHAR--(--datetime-expression--)--------------------------><
Character to Varchar:
功能:將指定character 類型串轉換成varchar類型。
參數:第一參數為character 類型,最大長度32672bytes;integer參數是可選項,不指定,則轉換后的長度為第一參數實際長度,取值范圍0-32672,如是指定長度小實際長度小,則會截取
Graphic to Varchar:(注:只能在Unicode databases數據庫中才能轉換)
功能:將指定的graphic類型串轉換成varchar類型串。
參數:第一參數為graphic類型串,最大長度16336個雙字節字符;integer參數為可選項,不指定,則轉換后的長度為第一參數實際定義長度,取值范圍0-32672
Datetime to Varchar:
功能:將時間參數轉換成varchar類型
參數:一定為DATE, TIME, or TIMESTAMP類型數據。
例:
values(varchar('akjjhe',5))? 返回:akjjh
values(varchar(date('2009-04-13')))? 返回:2009-04-13
VARCHAR_FORMAT
>>-VARCHAR_FORMAT--(--timestamp-expression--,format-string--)--><
功能:將timestamp類型數據或有效的timestamp格式的字符串(但不能是CLOB nor a LONG VARCHAR串)以指定的forma格式,轉換成varchar字符串
參數:第一個參數為timestamp類型或有效的timestamp格式的字符串;format-string為字符串(如'YYYY-MM-DD HH24:MI:SS')
注:下例格式的字符串都是有效的
?? '2000-1-01 09:00:00'??? (single digit for month)
?? '2000- 1-01 09:00:00'?? (single digit - preceded by a blank - for month)
?? '2000-1-1 09:00:00'???? (single digits for month and day)
?? '2000-01-01 9:00:00'??? (single digit for hour)
?? '2000-01-01 09:0:0'???? (single digits for minutes and seconds)
?? '2000- 1- 1 09: 0: 0'?? (single digit - preceded by a blank - for month,
??????????????????????????? day, minutes, and seconds)
?? '2000-01-01 09:00:00'?? (maximum number of digits for each element)
例:
把當前的timestamp轉換成字符串,以'YYYY-MM-DD HH24:MI:SS'格式
values(VARCHAR_FORMAT(current timestamp,'YYYY-MM-DD HH24:MI:SS'))
返回:2009-04-14 09:00:30
values(VARCHAR_FORMAT( '2000-1-1 09:00:00','YYYY-MM-DD HH24:MI:SS'))
返回:2000-01-01 09:00:00
values(VARCHAR_FORMAT('2000- 1-01 09:00:00','YYYY-MM-DD HH24:MI:SS'))? 為什么不行???
Datetime to Vargraphic:(只在unicode databases數據庫下才能轉換)
功能:將DATE, TIME, or TIMESTAMP類型數據轉換成Vargraphic串。
參數:一定為DATE, TIME, or TIMESTAMP類型數據
例:
values(VARGRAPHIC(timestamp('2009-04-14-11.03.23')))
?返回:2009-04-14-11.03.23.000000
values(VARGRAPHIC('dfherdsaa'))? 返回:dfherdsaa
WEEK
>>-WEEK--(--expression--)--------------------------------------><
功能:返回指定時間所在周的星期日在當年是第幾周,返加1-54的整數。
參數:一定為date, timestamp類型,或者是有效的date 或 timestamp格式字符串;但不能是CLOB 和 LONG VARCHAR串;在Unicode database數據庫中,graphic string串是首先轉換成character string串。
例:
values(week('2009-01-5'))? 返回:2
WEEK_ISO
>>-WEEK_ISO--(--expression--)----------------------------------><
功能:返回指定時間所在周的星期4在當年是第幾周,返回1-53的整數。
參數:為date, timestamp類型,或者為有效有date, timestamp格式字符串,不能為CLOB nor a LONG VARCHAR串。
注:此函數是以星期1為一周的開始;如果指定的日期是本年未的日期,所在的周的星期四是在下一年初,則返回1,為下一年的第一周,如果星期四是在本年未,則返回當年的最后一周是第幾周。如果指定日期是一年的年初,所在周的周四在本年,則返回1,否則返回上一年最后一周的周數。
例:
values(week_iso('2008-12-30'))??? 返回:1????? 由于所在周的星期四在2009年
values(week_iso('2010-01-02'))?? 返回:53???? 由于所在周的星期四在2009年未
YEAR
>>-YEAR--(--expression--)--------------------------------------><
功能:獲取參數中表示年部分的值,返回類型為large integer
參數:為date, timestamp, date duration, timestamp duration類型,或者符合date or timestamp格式的有效字符串,但不能是CLOB 或 LONG VARCHAR類型數據;在Unicode database數據庫中,如果為graphic string類型,則首先會轉換成character string串,再執行函數。
注:
如果參數為date, timestamp或者符合date or timestamp格式的有效字符串,則返回年部分的值,取值范圍1-9999
如果參數為date duration or timestamp duration ,則返回年部分的值,取值范圍-9999---9999
例:
values(year('2010-01-02'))?? 返回:2010
values(year(date('2009-01-02')-date('2006-1-2')))?? 返回:3
96.臨時表定義
declare global temporary table Mitdownloaddata(
???????????????????? MMCONO int,
???????????????????? MMSTAT int,
???????????????????? MMITNO varchar(30),
???????????????????? MMITDS varchar(60),
???????????????????? MMITTY varchar(6),
???????????????????? MMITGR varchar(16),
???????????????????? MMUNMS varchar(6),
???????????????????? SMID?? INT
?????????????????? ) on commit delete rows
??????????????????? not logged on rollback delete rows
??????????????????? with replace;
在定義過程中,臨時表名前不用加session模式,他會默認在此模式下創建,但在存儲過程使用這個監時表時,就需要指定session模式。
總結
以上是生活随笔為你收集整理的DB2数据库常用函数汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原生js监听滚动条_JS原生监听滚动条
- 下一篇: Redis集群的部署