-
DB2
函数大全
函数名
函数解释
函数举例
AVG()
返回一组数值的平均值
.
SELECT AVG(SALARY) FROM
BSEMPMS;
CORR(),CORRELATION()
返回一对数值的关系系数
.
SELECT
CORRELATION(SALARY,BONUS) FROM
BSEMPMS;
COUNT()
返回一组行或值的个数
.
SELECT COUNT(*) FROM
BSEMPMS;
COVAR(),COVARIANCE()
返回一对数值的协方差
.
SELECT
COVAR(SALARY,BONUS)
FROM BSEMPMS;
MAX()
返回一组数值中的最大值
.
SELECT MAX(SALARY) FROM
BSEMPMS;
MIN()
返回一组数值中的最小值
.
SELECT MIN(SALARY) FROM
BSEMPMS;
STDDEV()
返回一组数值的标准偏差
.
SELECT STDDEV(SALARY) FROM
BSEMPMS;
SUM()
返回一组数据的和
.
SELECT SUM(SALARY) FROM
BSEMPMS;
VAR(),VARIANCE()
返回一组数值的方差
.
SELECT VARIANCE(SALARY) FROM
BSEMPMS;
ABS(),ABSVAL()
返回参数的绝对值
.
SELECT ABS(-3.4) FROM
BSEMPMS;
ACOS()
返回参数的反余弦值
.
SELECT ACOS(0.9) FROM
BSEMPMS;
ASCII()
返回整数参数最左边的字符的
ASCII
码
.
SELECT
ASCII('R') FROM
BSEMPMS;
ASIN()
返回用弧度表示的角度
的参数的反正弦函数
.
SELECT
ASIN(0.9) FROM
BSEMPMS;
ATAN()
返回参数的反正切值<
/p>
,
该参数用弧度表示的角度的参数
.
p>
SELECT ATAN(0.9)
FROM BSEMPMS;
ATAN2()
返回用弧度表示的角
度的
X
和
Y
坐
标的反正切值
.
SELECT
ATAN2(0.5,0.9) FROM BSEMPMS;
BIGINT()
返回整型常量中的
数字或字符串的
64
位整数表示
.
p>
SELECT
BIGINT(EMP_NO) FROM BSEMPMS;
CEILING() OR CEIL()
< br>返回比参数大或等于参数的最小的整数值
.
SELECT
CEILING(3.56) FROM
BSEMPMS;
SELECT CEIL(4.67)
FROM BSEMPMS;
CHAR()
返回日期时间型
,
字符串
,
整数
p>
,
十进制或双精度浮点数的字符串表示
.<
/p>
SELECT CHAR(SALARY,',') FROM
BSEMPMS;
CHR()
p>
返回具有由参数指定的
ASCII
码的字符
.
SELECT
CHAR(167) FROM
BSEMPMS;
CONCAT()
返回两个字符串的连接
.
SELECT CONCAT(EMP_NO,EMP_NAM)
FROM BSEMPMS;
YEAR()
返回数值的年部分
.
SELECT YEAR('2003/01/02') FROM
BSEMPMS;
VARCHAR()
返回字符串
p>
,
日期型
,
图形串
的可变长度的字符串表示
.
SELECT
VARCHAR(EMP_NAM,50)
FROM BSEMPMS;
UCASE() OR
UPPER()
返回字符串的大写
.
SELECT UCASE(EMP_NAM) FROM
BSEMPMS;
SELECT
UPPER(EMP_NO) FROM BSEMPMS;
TRUNCATE() OR TRUNC()
从表达式小数点右边的位置开始截断并返回该数值
.
SELECT TRUNCATE(345.6789,2) FROM
BSEMPMS;
TIME()
返回一个数值中的时间
.
SELECT TIME('2001-03-19.12.30.123456')
FROM
BSEMPMS;
SUBSTR
(EXP1,EXP2)
返回
EXP1
串自
EXP2
处开始的
子串
.
SELECT
SUBSTR('CDNJFDJFJD',5) FROM
BSEMPMS;
SELECT
SUBSTR('CDNJFDJFJD',5,2) FROM
BSEMPMS;
SQRT()
返回该参数的平方根
.
SELECT SQRT(36) FROM
BSEMPMS;
SPACE()
返回由参数指定的长度
,
包含空格在内
的字符串
.
SELECT
SPACE(10)
FROM BSEMPMS;
SECOND()
返回一个数值的秒部分
.
SELECT SECOND('18:34:32') FROM
BSEMPMS;
RTRIM
()
删除字符串尾部的空格
.
SELECT RTRIM('COMMENT') FROM
BSEMPMS;
ROUND(EXP1,EXP2)
返回
EXP1
小数点右边的第
EXP2
位置处开始的四舍五入值
.
SELECT ROUND(2345.6789,2) FROM
BSEMPMS
REPLACE(EXP1,EXP2,EXP3)
用
EXP3
替代
EXP
1
中所有的
EXP2
SELECT
CHAR(REPLACE('ROMANDD','NDD','CCB'),10)
FROM BSEMPMS;
REPEAT(EXP1,EXP2)
返回
EXP1
重复
EXP2
次后的字符串
.
SELECT
CHAR(REPEAT('REPEAT',3),21) FROM
BSEMPMS;
REAL()
返回一个数值的单精度浮点数表示
.
SELECT REAL(10) FROM
BSEMPMS;
RAND
()
返回
0
和
1
之间的随机浮点数
.
SELECT
RAND() FROM BSEMPMS;
POWER(EXP1,EXP2)
返回
EXP1
的
EXP2
次幂
.
SELECT
POWER(2,5) FROM
BSEMPMS;
POSSTR
(EXP1,EXP2)
返回
EXP2
在
EXP1
中的位置
.
SELECT ('ABCDEFGH','D')
FROM
BSEMPMS;
NULLIF
(EXP1,EXP2)
如果
EXP1=EXP2,
则为
NULL,
否则为
EXP1
< br>
NODENUMBER()
返回行的分区号
.
SELECT NODENUMBER(EMP_NO) FROM
BSEMPMS;
MONTH()
返回一个数值的月部分
.
SELECT MONTH('2003/10/20') FROM
BSEMPMS;
MOD(EXP1,EXP2)
返回
EXP1
除以
EXP2
的余数
.
SELECT
MOD(20,8) FROM
BSEMPMS;
MINUTE()
返回一个数值的分钟部分
.
SELECT MINUTE('18:34:23') FROM
BSEMPMS;
LTRIM()
删除字符串前面的空格
.
SELECT LTRIM('CDDD') FROM
BSEMPMS;
HOUR()
返回一个数值的小时部分
.
SELECT HOUR('18:34:23') FROM
BSEMPMS;
DOUBLE()
如果参数是一个数字表达式
,
返回与其
相对应的浮点数
,
如果参数是字符
串表
达式
,
则返回该数的字符串表达式
.<
/p>
SELECT DOUBLE('5678') FROM
BSEMPMS;
EXP()
返回参数的指数函数
.
SELECT EXP(2) FROM BSEMPMS;
FLOAT()
返回一个数的浮点表示
.
SELECT FLOAT(789) FROM
BSEMPMS;
FLOOR()
返回小于或等于参数的最大整数
.
SLECTFLOOR(88.93) FROM
BSEMPMS;
HEX()
返回一个表示为字符串的
值的
16
进制表示
.
< br>
SELECT HEX(16) FROM
BSEMPMS;
因为没有更好的术
语,所以您还可以使用英语来执行日期和时间计算:
current date + 1 YEAR
current date + 3 YEARS + 2
MONTHS + 15 DAYS
current
time + 5 HOURS - 3 MINUTES + 10 SECONDS
要计算两个日期之间的天数,您可以对日期作减法,如下所示:
days (current
date) - days (date('1999-10-22'))
而以下示例描述了如何获得微秒部分归零的当前时间戳记:
CURRENT
TIMESTAMP
-
MICROSECOND
(current
timestamp)
MICROSECONDS
如果想将日期或时间值与其它文本
相衔接,
那么需要先将该值转换成字符串。
为此,
只要使用
CHAR()
函数:
char(current date)
char(current time)
char(current date + 12 hours)
要将字符串转换成日期或时间值,可以使用:
TIMESTAMP
('2002-10-20-12.00.00.000000')
TIMESTAMP ('2002-10-20 12:00:00')
DATE ('2002-10-20')
DATE ('10/20/2002')
TIME ('12:00:00')
TIME ('12.00.00')
如果你
想将当前日期格式转化成定制的格式(比如
‘yyyymmdd’
)
,那又该如何去做
呢?按照我的经验,最好的办法就是编写
一个自己定制的格式化函数。
下面是这个
UDF
的代码
:
create function ts_fmt(TS timestamp,
fmt varchar(20))
returns
varchar(50)
return
with tmp
(dd,mm,yyyy,hh,mi,ss,nnnnnn) as
(
SELECT
substr( digits
(day(TS)),9),
substr( digits (month(TS)),9) ,
rtrim(char(year(TS))) ,
substr( digits
(hour(TS)),9),
substr( digits (minute(TS)),9),
substr( digits (second(TS)),9),
rtrim(char(microsecond(TS)))
FROM
my1
)
SELECT
case fmt
when 'yyyymmdd'
then yyyy || mm || dd
when
'mm/dd/yyyy'
then mm || '/'
|| dd || '/' || yyyy
when 'yyyy/dd/mm hh:mi:ss'
then yyyy || '/' || mm ||
'/' || dd || ' ' ||
hh
|| ':' || mi || ':' || ss
when 'nnnnnn'
then nnnnnn
else
'date format ' || coalesce(fmt,' ') ||
' not recognized.'
end
FROM
tmp
DB2
使用建议汇总
1.
字符型转换成数值型
select
integer(bh)
from table
select cast(bh as integer)
from table
2.
数值型转字符型
select
trim(char(ylnx) from table
p>
-----------------------------------------
---------------------------
其他:
1.
去空格
*DB2
中:
Ltrim()
是去左边
空格
,rtrim()
是去右边空格。
*informix
中:
trim
p>
()就是去空格。
用法:例:
string a=
abc
*DB2
中:
Ltrim(a)=
abc
(
ltrim
(
a
)
)
=
*informix
中:
trim<
/p>
(
a
)
=
注意:
DB2
中无
t
rim
()函数,所以要去空格要执行左右去空格。
2.
取值若为空值,用另外一个值代替
value(parm,string)
或者
coalesce(parm,string)
从表中取字段
parm
,若为空值,用
string
代替。
*DB2
中:
value
(parm,string)
或者
coalesce(parm,string)
*informix
< br>中:
NVL(parm,string)
。
用法:例:
*DB2
中:
select
value(name,'
呵呵
') from
student;select
coalesce(name,'
呵呵
') from
student;
若
student
< br>的表中
name
字段为空值,则显示出‘呵呵’,若有值
则显示
出
name
字段的值
*informix
中:
select
NVL(name,'
呵呵
') from student
一样
(parm,int z),
将字段重复
z
次后输出
*DB2
中:
select
name
from
student
,
select
repeat(name,2)
from
student
第一句输出为:‘呵呵’,
第二句输出为
:
‘呵呵呵呵’
4.
往表格中插入多行
*DB2
中
:
insert into table1 (select
parm1,parm2... from table2)
*
注意:从
table2
中必须取与
t
able1
相同多字段值才行
p>
-----------------------------------------
----------------------------
-----------
以下的文章主要向大家讲述的是
DB2
字符串
的有关函数与其具体用法,其中主
要内容有字符转换函
数,
去空格函数,
取子串函数,
字符串
比较函数以及数据类
型转换函数等内容的描述。
一、字符转换函数
1
、
ASCII()
返回字符表达式最左端字符的
ASCII
码值。在
ASCII
()函数中,纯数字的字符
串可不用‘’括起来,
但含其它字符的字符串必须用‘’括起来使用,
p>
否则会出
错。
2
、
CHAR()
将
ASCII
码转换为字符。如果没有输入
0 ~ 255
之间的
ASCII
码值,
CHAR
()
返回
NULL
。
3
、
p>
LOWER()
和
UPPER()
LOWER()
将字符串全部转为小写;
UP
PER()
将字符串全部转为大写。
4
、
STR()
把数值型数据转换为字符型数据。
STR (
,
length[
,
length
指定返回的字符串的长度,
decimal
< br>指定返回的小数位数。如果没有指
定长度,缺省的
len
gth
值为
10
,
decimal
缺省值为
0
。
当
length
或者
decimal
为负值时,返回
NULL
;
当
length
小于小数点左边(包括符号位)的位数时,返回
length
个
*
;
先服从
length
,再取
decimal
;
当返回的字符串位数小于
length
,左边补足空格。
二、去空格函数
1
、
LTRIM()
把字符串头部的空格去掉。
2
、
RTRIM()
把字符串尾部的空格去掉。
三、取子串函数
1
、
left()
LEFT
(
,
返回
character_exdivssion
左起
integer_exdivssion
个字符。
2
、
RIGHT()
RIGHT
(
,
返回
character_exdivssion
右起
integer_exdivssion
个字符。
3
、
SUBSTRING()
SUBSTRING
(
,
,
length)
返回从字符串左边第
starting_ position
个字符起
length
个字符的部分。
四、字符串比较函数
1
、
CHARINDEX()
返回
DB2
字符串中某个指定的子串出现的开始位置。
CHARINDEX
(<’substring_exdivssion’>,
其中
substring
_exdivssion
是所要查找的字符表达式,
exdivssion
可为字符
串也可为列名表达式。如果没有发现子串,则返回
0
值。
此函数不能用于
TEXT
和
IMAGE
数据类型。
2
、
PATINDEX()
返回字符串中某个指定的子串出现的开始位置。
PATINDEX (<’%substring
_exdivssion%’>,
< br>其中子串表达
式前后必须有百分号“%”否则返回值为
0
。
与
CHARINDEX
函数不同的是
,
PATINDEX
函数的子串中可以使用通配符,且此函
p>
数可用于
CHAR
、
VARCHAR
和
TEXT
数据类型。
五、字符串操作函数
1
、
QUOTENAME()
返回被特定字符括起来的字符串。
QUOTENAME
(<’character_exdivssion’>[,
quote_
character])
其中
quote_
character
标明括字符串所用的字符,缺省值为“[]”。
2
、
REPLICATE()
返回一个重复
character_exdivssion
指定次数的字符串。
REPLICATE (character_exdivssion
integer_exdivssion)
如果
integer_exdivssion
值为负值,则返回
NULL
。
3
、
REVERSE()
将指定的字符串的字符排列顺序颠倒。
REVERSE (
其中
character_exdivssion
可以是字符
串、常数或一个列的值。
4
、
REPLACE()
返回被替换了指定子串的字符串。
REPLACE
(
,
,
用
string_exdivssion3
替换在
string_exdivssion1
中的子串
string_exdivssion2
。
4
、
SPACE()
返回一个有指定长度的空白字符串。
SPACE (
如果
integer_exdivssion
值为负值,则返回
NULL
。
5
、
STUFF()
用另一子串替换
DB2
字符串指定位置、长度的子串。
STUFF
(
,
,
,
如果起始位置为负或长度值为负,或者起始位置大于
characte
r_exdivssion1
的长度,则返回
NULL
值。
如果
length
长度大于
character_exdivssion1
中
start_ position
以右的长
度,则
character_exdivssion
1
只保留首字符。
六、数据类型转换函数
1
、
CAST()
CAST (
2
、
CONVERT()
CONVERT (
,
,
style])
1
)
data_type
为
SQL
Server
系统定义的数据类型,用户自定义的数据
类型不能
在此使用。
2
)
length
用于指定数据的长度,缺省值为
p>
30
。
3
)把
CHAR
或
VA
RCHAR
类型转换为诸如
INT
或<
/p>
SAMLLINT
这样的
INTEGER
类型、
结果必须是带正号或负号的数值。
4
)
TEXT
类型到
CHAR
或
VARCHAR
类型转换最多为
8000
个字符,
p>
即
CHAR
或
VA
RCHAR
数据类型是最大长度。
5
)
IMAGE
类型存储的数据转换到<
/p>
BINARY
或
VARBINARY
p>
类型,最多为
8000
个字
符。
6
)
< br>把整数值转换为
MONEY
或
S
MALLMONEY
类型,
按定义的国家的货币单位来处理,<
/p>
如人民币、美元、英镑等。
7
)
BIT
类型的转换把非零值转换为
1
,并仍以
BIT
类型存
储。
8
)
试
图转换到不同长度的数据类型,
会截短转换值并在转换值后显示“+”,
以
标识发生了这种截断。
9
)
用
CONVERT
< br>()
函数的
style
选项能以不同的格式显示日期和时间。
style
是
将
DATATIME
和
SMALLDATETIME
数据转换为字符串时所选用的由
SQL
Server
系
统提供的转换样式编
号,不同的样式编号有不同的输出格式。
七、日期函数
1
、
day(date_exdivssion)
返回
p>
date_exdivssion
中的日期值
2
、
month(date_ex
divssion)
返回
date_exdivssion<
/p>
中的月份值
3
、
year(date_exdivssion)
返回
date_exdivssion
中的年份值
4
、
DATEADD()
DATEADD
(
,
,
返回指定日期
date
加上指定的额外日期间隔
number
产生的新日期。
5
、
DATEDIFF()
DATEDIFF
(
,
,
返回两个指定日期在
datepart
方面的不同之处,
即
date2
p>
超过
date1
的差距值,
其结果值是一个带有正负号的整数值。
6
、
DATENAME()
DATENAME
(
,
以
DB2
字符串的形式返回日期的指定部分此部分。由
datepart
来指定。
7
、
DATEPART()
DATEPART
(
,
以整数值的形式返回日期的指定部分。此部分由
datepart
来指定。
DATEPART
(dd
,
date)
等同于
DAY (date)
DATEPART (mm
,
date)
等同于
MONTH (date)
DATEPART (yy
,
date)
等同于
YEAR (date)
8
、
GETDATE()
以
DATETIME
的缺省格式返回系统当前的日期和时间
SQL
日期和时间函数
DAYNAME
返回一
个大小写混合的字符串,
对于参数的日部分,
用星期表示这
p>
一天的名称(例如,
Friday
)
。
DAYOFWEEK
返回参数中的星期几,用范围在
1-7
的整数值表示,其中
1
代表
星期日。
DAYOFWEEK_ISO
返回参数中的星期几,
用范围在
1-7
的整数值表示,
其中
1
代
表星期一。
DAYOFYEAR
返回参数中一年中的第几天,用范围在
1-366
的整数值表示。
DAYS
返回日期的整数表示。
JULIAN_DAY
返回从公元前
4712
年
1
月
1
日<
/p>
(儒略日历的开始日期)
到参
数中指定日
期值之间的天数,用整数值表示。
MIDNIGHT_SECONDS
返回午夜和参数中指定的时间值之间的秒数,用范围在
0
到
86400
之间的整数值表示。
MONTHNAME
对于参
数的月部分的月份,返回一个大小写混合的字符串
(例如,
Ja
nuary
)
。
TIMESTAMP_ISO
根据日期、时间或时间戳记参数而返回一个时间戳记值。
TIMESTAMP_FORMAT
从已使用字符模板解释的字符串返回时间戳记。
TIMESTAMPDIFF
根据两
个时间戳记之间的时差,返回由第一个参数定义的类
型表示的估计时差。
TO_CHAR
返回已用字符模板进行格式化的时间戳记的字符表示。
TO_CHAR
是
V
ARCHAR_FORMAT
的同义词。
TO_DATE
从已使
用字符模板解释过的字符串返回时间戳记。
TO_DATE
是
TIMESTAMP_FORMAT
的同义词。
WEEK
返回参数中一年的第几周,用范围在
1-54
的整数值表示。以星
期日作
为一周的开始。
WEEK_ISO
返回参数中一年的第几周,用范围在
1-53
的整数值表示。
---------------------------
--------------------------------------------------
---
mymm
回复于:
2003-08-04 14:22:38
Example:
YEAR (current timestamp)
MONTH (current timestamp)
DAY (current timestamp)
HOUR (current timestamp)
MINUTE (current timestamp)
SECOND (current timestamp)
MICROSECOND (current
timestamp)
-
-
-
-
-
-
-
-
-
上一篇:必修四英语第四单元词语(英汉版)
下一篇:跨导运算放大器的设计