首页 > 学技术 > 技术网文 > IBM AS400应用论坛 > 正文

[精华] 整理几个常用的sql内部函数[参照红皮书]


来源 chinaunix.net 酷勤网整理

[CODE]
1.Avg             计算平均值
Example: SELECT AVG(PRSTAFF)
FROM PROJECT
WHERE DEPTNO ='D11'

2.Count             计算符合条件的纪录行数
Example1: SELECT COUNT(*)
FROM EMPLOYEE
WHERE SEX ='F'
Example2: SELECT COUNT(DISTINCT WORKDEPT)
FROM EMPLOYEE
WHERE SEX='F'

3.Max            返回一个数据集里的最大值
Example: SELECT MAX(SALARY) /12
FROM EMPLOYEE

4.min             返回一个数据集里的最小值
Example: SELECT MIN(SALARY) /12
FROM EMPLOYEE

5.SUM             求和
EXAMPLE: SELECT SUM(BONUS)
FROM EMPLOYEE
WHERE JOB ='CLERK'

6. ABS or ABSVAL          计算绝对值
EXAMPLE: SELECT ABS(BONUS)
FROM EMPLOYEE
WHERE JOB ='CLERK'

7. CEILING                 小数位进位
EXAMPLE: SELECT CEILING( 3.5),
CEILING( 3.1),
CEILING(-3.1),
CEILING(-3.5),
FROM TABLEX
This example returns:
4.0 4.0 -3.0 -3.0


8.CONCAT                          字符串连结
EXAMPLE:SELECT CONCAT(FIRSTNME, LASTNAME) AS FULLNAME
FROM AUTHOR 


11.substring or substr    字符串截取
Example:
SELECT * FROM PROJECT
WHERE SUBSTR(PROJNAME,1,10) ='OPERATION '
挑选字段PROJNAME前十位等于常量'OPERATION '的所有记录

12.Round          四舍五入
Example1:
SELECT 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)
FROM TABLEX
结果:
0873.730 0873.700 0874.000 0870.000 0900.000 1000.000 0000.000

Example2:
SELECT ROUND( 3.5, 0),
ROUND( 3.1, 0),
ROUND(-3.1, 0),
ROUND(-3.5, 0)
FROM TABLEX
结果:
4.0 3.0 -3.0 -4.0

13.UCASE or UPPER        转换为大写字符串

UCASE('abcdef')  结果为’ABCDEF’

14. LOWER or LCASE       转换为小写字符串

lower('aBcDef')  结果为’abcdef

15.locate                                返回源串在目标串出现的的一个位置
EXAMPLE
SELECT LOCATE(' FF C','FF FF CCC',1) FROM CBB721 

16. POSITION or POSSTR    返回源串在目标串出现的的一个位置
EXAMPLE1:半角情况
SELECT POSITION('D' IN 'FFCD') FROM CBB721
EXAMPLE2:混合情况
SELECT POSSTR('FFC DSF ',' F ') FROM CBB721

[/CODE]



 xf001 回复于:2006-01-18 09:21:21

[CODE]
CURTIME                   返回系统时间
CURDATE                   返回系统日期
DATE                       返回一个日期型值
EXAMPLE:   DATE(‘1980-12-07’)

DAY                          返回参数的日期值部分
EXAMPLE:DATE1等于2000-03-15
DATE2等于1999-12-31
DAY (DATE1-DATE2)
结果15

DAYOFMONTH                返回参数日期部分
AMC等于’2006-01-01’
DAYOFMONTH(AMC)
结果
1

DAYOFWEEK                  返回星期值1~7,1-星期日;7-星期六
AMC等于’2006-01-01’
DAYOFMONTH(AMC)
结果
1

DAYOFYEAR                返回值1~366
AMC等于’2006-02-01’
DAYOFMONTH(AMC)
结果
32


DAYS                           返回参数日期与’0001-01-01’的天数差
EXAMPLE: 
AMC1等于’2006-02-01’
AMC2等于’2006-01-01’

DAYS(AMC1)-DAYS(AMC2)
结果
31

HOUR                         返回参数小时部分,参数为时间或时间戳类型

[/CODE]


 hhmyz 回复于:2006-01-18 10:49:09

在db2中有把數字轉換為日期的函數嗎﹖
例如在﹕ms sql中可以﹕select cast(4567 as datetime)
則顯示出日期。
db2中好象也不能用select date('1980-10-10')的形式﹐
是不是一定要from table的格式。望告知。


 pl421 回复于:2006-01-18 10:54:38

引用:原帖由 hhmyz 于 2006-1-18 10:49 发表
在db2中有把數字轉換為日期的函數嗎﹖
例如在﹕ms sql中可以﹕select cast(4567 as datetime)
則顯示出日期。
db2中好象也不能用select date('1980-10-10')的形式﹐
是不是一定要from table的格式。望告知。 



1。环境应该是DB2/400

2。个人看法:能组成一个有效SQL语句即可


 fxf_china 回复于:2006-04-12 09:33:34

有没有取前N条记录的命令的,类似top,first的关键字?


 35200159 回复于:2006-04-12 11:02:42

select * from pf1 where sex = '1' fetch first 20 rows only

取满足条件的前二十条记录


 fxf_china 回复于:2006-04-12 11:21:53

楼上是使用游标时的写法吧
在STRSQL里不行的


 liuhan_cn_msn 回复于:2006-04-12 12:56:51

mark


 qingzhou 回复于:2006-04-12 13:01:17

不错、不错。。。:mrgreen:


 ANTENTER 回复于:2006-04-12 13:11:54

收了!


 大肥肥 回复于:2006-04-12 13:51:18

引用:原帖由 fxf_china 于 2006-4-12 11:21 发表
楼上是使用游标时的写法吧
在STRSQL里不行的 


Try again, it seems is OK.
I find SQL server, MySQL and DB2/400 is different in the expression.


 clampox 回复于:2006-04-13 15:09:06

请问如何查看表结构、索引之类的,
就象ORACLE里的DESC TABLE那样?




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=690924
转载请注明作者名及原文出处



收藏本页到: