在DM_SQL中支持数值、字符、日期、转换等种类的函数来满足用户不同的需求。

通过查询V$ifun和V$ifun_arg可以得到数据库提供的所有的函数以及其对应的参数要求。

select a.NAME as "函数名称",b.NAME as "参数名称",DATA_TYPE as "参数类型" from v$ifun as a JOIN v$ifun_arg as b on a.id=b.id;

达梦数据number 对应java 啥类型 达梦数据库varchar2_DM

同样可以在DM管理工具上方菜单栏中依次选择“窗口->视图->函数”来直观地查看DM_SQL函数的作用描述。

达梦数据number 对应java 啥类型 达梦数据库varchar2_sql_02

达梦数据number 对应java 啥类型 达梦数据库varchar2_数据库_03

接下来从各个种类出发对常用的函数进行介绍。

一、字符函数

LOWER(char)

        将字符串转换为小写字符串

达梦数据number 对应java 啥类型 达梦数据库varchar2_sql_04

UPPER(char)

        将字符串转换为大写字符串

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串转换_05

INITCAP(char)

        将字符串中单词的首字符转为大写

达梦数据number 对应java 啥类型 达梦数据库varchar2_DM_06

CONCAT(char1,char2,char3,...)

        将多个字符串连接为一个

        

达梦数据number 对应java 啥类型 达梦数据库varchar2_数据库_07

SUBSTR(char,m,n)

        返回字符串从第m个位置开始长度为n的字串(第一个字符的位置为1而不是0)

达梦数据number 对应java 啥类型 达梦数据库varchar2_sql_08

LEN(char)与LENGTH(char)

        两者都返回字符串中字符的个数,区别在于LEN不记录末尾空格,而LENGTH记录

达梦数据number 对应java 啥类型 达梦数据库varchar2_sql_09

 

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串_10

INSTR(char1,char2)

        返回char1中char2第一次出现的位置(若没有出现过返回0)

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串_11

LPAD(char1,n,char2)

        在char1左边填充char2至总长度为n

达梦数据number 对应java 啥类型 达梦数据库varchar2_DM_12

RPAD(char1,n,char2)

        在char1右边填充char2至总长度为n

达梦数据number 对应java 啥类型 达梦数据库varchar2_DM_13

TRIM(char1 FROM char2)

        从char2中删除char1

达梦数据number 对应java 啥类型 达梦数据库varchar2_数据库_14

 二、数值函数

ROUND()

        将值四舍五入至指定小数位

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串转换_15

TRUNC()

        将值阶段至指定小数位

达梦数据number 对应java 啥类型 达梦数据库varchar2_数据库_16

MOD()

        返回除法运算的余数

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串_17

三、日期函数

MONTHS_BETWEEN()

        返回两个日期之间的月数

达梦数据number 对应java 啥类型 达梦数据库varchar2_sql_18

ADD_MONTHS()

        将日期加上指定月数后返回结果日期

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串_19

NEXT_DAY()

        返回指定日期下一个周几的日期(1为周日,2为周一,以此类推)

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串转换_20

达梦数据number 对应java 啥类型 达梦数据库varchar2_数据库_21

LAST_DAY()

        返回月份的最后一天

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串转换_22

四、转换函数

隐式转换

        达梦数据库在进行复制操作时会自动将合适的字符转换为日期或数值类型,以及将日期或数值类型转换为字符。

显示转换

达梦数据number 对应java 啥类型 达梦数据库varchar2_数据库_23

TO_NUMBER()

        字符串转换为数值类型

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串_24

TO_DATE()

        字符串转换为日期类型

达梦数据number 对应java 啥类型 达梦数据库varchar2_sql_25

TO_CHAR()

        日期类型以特定的格式转换为字符类型

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串_26

         数值类型以特定格式转换为字符类型

达梦数据number 对应java 啥类型 达梦数据库varchar2_数据库_27

五、分组函数

        分组函数作用于一组数据,返回一个值,常在查询语句中与group by一同使用。下面以达梦数据库实例在创建时生成的示例库DMHR下的EMPLOYEE表为例进行演示。

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串_28

AVG()、MAX()、MIN()、SUM()

        三者分别返回一组数据的平均值、最大值、最小值以及求和

达梦数据number 对应java 啥类型 达梦数据库varchar2_sql_29

 COUNT()

        返回样本个数

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串转换_30

 CUBE()

对分组列以及分区列的所有子集进行分组,输出所有分组结果。

        先来看没有使用CUBE()函数,对不同部门下各个职位总计薪酬的查询结果:

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串转换_31

         在使用了CUBE()函数后,查询结果变成了这样:

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串转换_32

        很容易可以看出使用CUBE()函数的语句结果多了几条,而多出的几条结果则统计了:

  1. 不同部门相同职位的薪酬之和
  2. 相同部门不同职位的薪酬之和
  3. 所有部门和所有职位薪酬之和

        例如第9行结果是102部门下所有职位的薪酬之和,数值为第10行与第11行结果的总计薪酬相加而来。

        CUBE()函数便是通过这种方式来提供统计分析的功能。

ROLLUP()

        效果与CUBE()函数类似,但ROLLUP()仅对第一个参数进行合计,因此产生结果条数更少。

达梦数据number 对应java 啥类型 达梦数据库varchar2_字符串转换_33

 

GROUPING()

        与CUBE()或ROLLUP()一起使用,用于表示某列是否为分组列(是为0,否为1),GROUPING()函数只能包含一列

达梦数据number 对应java 啥类型 达梦数据库varchar2_sql_34