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数据库)