db2 char 太长 DB2函数大全

转载:http://www.08.la/news2010/newshtml/JiShuWenZhang/DB2/25363.html

 

 函数名 函数解释 函数举例

  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) FROMBSEMPMS;

  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()  返回参数的反正切值,该参数用弧度表示的角度的参数.  

  SELECT ATAN(0.9) FROM BSEMPMS;

  ATAN2()  返回用弧度表示的角度的X和Y坐标的反正切值.  

  SELECT ATAN2(0.5,0.9) FROM BSEMPMS;

  BIGINT()  返回整型常量中的数字或字符串的64位整数表示.  

  SELECT BIGINT(EMP_NO) FROM BSEMPMS;

  CEILING() OR CEIL()  返回比参数大或等于参数的最小的整数值.  

  SELECT CEILING(3.56) FROM BSEMPMS;  

  SELECT CEIL(4.67) FROM BSEMPMS;

  CHAR()  返回日期时间型,字符串,整数,十进制或双精度浮点数的字符串表示.  

  SELECT CHAR(SALARY,',') FROM BSEMPMS;

  CHR()  返回具有由参数指定的ASCII码的字符.  

  SELECT CHAR(167) FROM BSEMPMS;

  CONCAT()  返回两个字符串的连接. 

  SELECT CONCAT(EMP_NO,EMP_NAM) FROM BSEMPMS;

  YEAR()  返回数值的年部分.  

  SELECT YEAR('2003/01/02') FROM BSEMPMS;

  VARCHAR()  返回字符串,日期型,图形串的可变长度的字符串表示.  

  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()  返回该参数的平方根.  SELECTSQRT(36)FROMBSEMPMS;

  SPACE()  返回由参数指定的长度,包含空格在内的字符串.  SELECTSPACE(10)FROMBSEMPMS;

  SECOND()  返回一个数值的秒部分.  SELECTSECOND('18:34:32')FROMBSEMPMS;

  RTRIM()  删除字符串尾部的空格.  SELECTRTRIM('COMMENT')FROMBSEMPMS;

  ROUND(EXP1,EXP2)  返回EXP1小数点右边的第EXP2位置处开始的四舍五入值.  SELECTROUND(2345.6789,2)FROMBSEMPMS

  REPLACE(EXP1,EXP2,EXP3)  用EXP3替代EXP1中所有的EXP2  SELECTCHAR(REPLACE('ROMANDD','NDD','CCB'),10)FROMBSEMPMS;

  REPEAT(EXP1,EXP2)  返回EXP1重复EXP2次后的字符串.  SELECTCHAR(REPEAT('REPEAT',3),21)FROMBSEMPMS;

  REAL()  返回一个数值的单精度浮点数表示.  SELECTREAL(10)FROMBSEMPMS;

  RAND()  返回0和1之间的随机浮点数.  SELECTRAND()FROMBSEMPMS;

  POWER(EXP1,EXP2)  返回EXP1的EXP2次幂.  SELECTPOWER(2,5)FROMBSEMPMS;

  POSSTR(EXP1,EXP2)  返回EXP2在EXP1中的位置.  SELECT('ABCDEFGH','D')FROMBSEMPMS;

  NULLIF(EXP1,EXP2)  如果EXP1=EXP2,则为NULL,否则为EXP1

  NODENUMBER()  返回行的分区号.  SELECTNODENUMBER(EMP_NO)FROMBSEMPMS;

  MONTH()  返回一个数值的月部分.  SELECTMONTH('2003/10/20')FROMBSEMPMS;

  MOD(EXP1,EXP2)  返回EXP1除以EXP2的余数.  SELECTMOD(20,8)FROMBSEMPMS;

  MINUTE()  返回一个数值的分钟部分.  SELECTMINUTE('18:34:23')FROMBSEMPMS;

  LTRIM()  删除字符串前面的空格.  SELECTLTRIM('CDDD')FROMBSEMPMS;

  HOUR()  返回一个数值的小时部分.  SELECTHOUR('18:34:23')FROMBSEMPMS;

  DOUBLE()  如果参数是一个数字表达式,返回与其相对应的浮点数,如果参数是字符串表达式,则返回该数的字符串表达式.  SELECTDOUBLE('5678')FROMBSEMPMS;

  EXP()  返回参数的指数函数.  SELECTEXP(2)FROMBSEMPMS;

  FLOAT()  返回一个数的浮点表示.  SELECTFLOAT(789)FROMBSEMPMS;

  FLOOR()  返回小于或等于参数的最大整数.  SLECTFLOOR(88.93)FROMBSEMPMS;

  HEX()  返回一个表示为字符串的值的16进制表示.  SELECTHEX(16)FROMBSEMPMS;

  因为没有更好的术语,所以您还可以使用英语来执行日期和时间计算: 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 sysibm.sysdummy1 ) 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基础的东东看看,比在这里问快多了,虽然别人找的时候也快!!

  SQL 日期和时间函数 DAYNAME 返回一个大小写混合的字符串,对于参数的日部分,用星期表示这一天的名称(例如,Friday)。 DAYOFWEEK 返回参数中的星期几,用范围在 1-7 的整数值表示,其中 1 代表星期日。 DAYOFWEEK_ISO 返回参数中的星期几,用范围在 1-7 的整数值表示,其中 1 代表星期一。 DAYOFYEAR 返回参数中一年中的第几天,用范围在 1-366 的整数值表示。 DAYS 返回日期的整数表示。 JULIAN_DAY 返回从公元前 4712 年 1 月 1 日(儒略日历的开始日期)到参数中指定日期值之间的天数,用整数值表示。 MIDNIGHT_SECONDS 返回午夜和参数中指定的时间值之间的秒数,用范围在 0 到 86400 之间的整数值表示。 MONTHNAME 对于参数的月部分的月份,返回一个大小写混合的字符串(例如,January)。 TIMESTAMP_ISO 根据日期、时间或时间戳记参数而返回一个时间戳记值。 TIMESTAMP_FORMAT 从已使用字符模板解释的字符串返回时间戳记。 TIMESTAMPDIFF 根据两个时间戳记之间的时差,返回由第一个参数定义的类型表示的估计时差。 TO_CHAR 返回已用字符模板进行格式化的时间戳记的字符表示。TO_CHAR 是 VARCHAR_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) 引用: mymm 回复于:2003-08-08 17:01:11 DAYS函数返回日期的整数表示。 要计算两个日期之间的天数,可以: days (current date) - days (date('2000-9-1'))

  要使用 SQL 获得当前的日期、时间及时间戳记,请参考适当的 DB2 寄存器: SELECT current date FROM sysibm.sysdummy1 SELECT current time FROM sysibm.sysdummy1 SELECT current timestamp FROM sysibm.sysdummy1 sysibm.sysdummy1 表是一个特殊的内存中的表,用它可以发现如上面演示的 DB2 寄存器的值。您也可以使用关键字 VALUES 来对寄存器或表达式求值。例如,在 DB2 命令行处理器(Command Line Processor,CLP)上,以下 SQL 语句揭示了类似信息: VALUES current date VALUES current time VALUES current timestamp 在余下的示例中,我将只提供函数或表达式,而不再重复 SELECT ... FROM sysibm.sysdummy1 或使用 VALUES 子句。 要使当前时间或当前时间戳记调整到 GMT/CUT,则把当前的时间或时间戳记减去当前时区寄存器: current time - current timezone current timestamp - current timezone 给定了日期、时间或时间戳记,则使用适当的函数可以单独抽取出(如果适用的话)年、月、日、时、分、秒及微秒各部分: YEAR (current timestamp) MONTH (current timestamp) DAY (current timestamp) HOUR (current timestamp) MINUTE (current timestamp) SECOND (current timestamp) MICROSECOND (current timestamp) 从时间戳记单独抽取出日期和时间也非常简单: DATE (current timestamp) TIME (current timestamp) 因为没有更好的术语,所以您还可以使用英语来执行日期和时间计算: 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') TIMESTAMP()、DATE() 和 TIME() 函数接受更多种格式。

  =====DBase:db2常用命令及技巧================

  1.db2里面的字符串连接可用"||"这个进行连接

  2.如何快速删除大批量的数据表(test为数据库表)

  最常用也是最多人用的语句:delete from test,但这种做法,效率比较低,花费时间太长,因为在删除数据时,要记数据库日志。

  import from /dev/null of del replace into test//先清空,再导入数据(由于导入的文件为空,故相当于清空表数据),这种删除的速度较快

  ALTER TABLE test activate NOT LOGGED initially WITH EMPTY TABLE ;删除表中的数据,不记日志,这种处理最快

  3.导入、导出数据,支持的文件有ixf,del文件

  db2 "export to fileName.del of del select * from tableName" //db2中把表中的数据导入到文件

  db2 "import from fileName.del of del insert into tableName " //db2中把文件中的数据导入到表

  4.DB2中检查表是否已存在

  select * from "SYSIBM"."SYSTABLES" where lower(name) ='afa_maintransdtl'

  5.处理db2锁表问题:

  db2 “connect to afa”

  db2 “get snapshot for locks on 实例名”

  db2 “terminate”

  然后查看相关信息,找到被锁定的表,执行以下语句:

  db2 “force application(application handle) 注:application handle对应的是一个整数

  6.在服务器上创建存储过程时:

  应为存储过程指定特定的换行符,然后执行下面的语句:

  db2 -td@ -vf fileName.sql (其中@为存储过程中指定的换行符)

  7. 查看索引是否起作用

  runstats on table afa.yj_jywtk with distribution and detailed indexes all;

  8.截取数据库快照:

  db2 "connect to 实例名"

  db2 "update monitor switches using lock ON sort ON bufferpool ON uow ON table ON statement ON"

  db2 "get snapshot for all on 实例名"

  9. 查看存储过程

  select procname,text from sysibm.sysprocedures;

  10.

  list tables 查看数据库表

  11.查找字符在字串中的位置

  locate('y','xyz')

  查找'y'在'xyz'中的位置。

  12. 计算两个日期的相差天数

  days(date('2007-03-01'))-days(date('2007-02-28'))

  days 返回的是从 0001-01-01 开始计算的天数

  13. 为一个用户访问另一个实例创建表映射

  create alias tableName for 实例名. tableName

  14.如何查看表结构

  describe table tableName

  or

  describe select * from table_name

  15.如何重新启动数据库?

    restart database database_name

    

  16.如何激活数据库?

    activate database database_name

    

  17.如何停止数据库?

    deactivate database database_name

  18.如何重命名表?

    rename table_old to table_new

  19.如何定义序列?

  create sequence orderseq start with 1 increment by 1 no maxvalue no cycle cache24

  20.如何查看一个表的索引

  describe indexes for t欢迎光临学网,收藏本篇文章 [1] [2]

  $False$

  able tableName show detail

  文章出处:http://www.diybl.com/course/7_databases/db2/2008109/149367.html

你可能感兴趣的:(数据结构,sql,db2)