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,再執行函式。
LCASE or LOWER
>>-+-LCASE-+--(--string-expression--)--------------------------><
'-LOWER-'
功能:將 string_exp 中的A-Z字元轉換為小寫字元。
引數:要求為內建字串型別,支援LONG VARCHAR and CLOB型別;在Unicode database資料庫中,如果為graphic string,則首先轉換成character string,再執行函式。
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#[email protected]&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