在SQL的函数中可以执行一些诸如对某一些进行汇总或将一个字符串中的字符转换为大写的操作等;

函数有:汇总函数、日期与时间函数、数学函数、字符函数、转换函数与其他函数。

汇总函数

  这是一组函数,它们返回的数值是基于一列的(因为不会对单个的记录求平均值)

COUNT: 返回满足WHERE条件子句中记录的个数

  查找多少球员的击球数小于350:SELECT COUNT(*) NUMBER_BELOW_350 FROM TEAMSTATS WHERE HITS/AB<.35;

  查找表中所有的记录条数:SELECT COUNT(*) FROM TEAMSTATS;(没有WHERE子句时就返回所有的记录个数)

SUM: 返回某一列的和,只能对数字进行计算。

  查找队员总打点的总和:SELECT SUM(SINGLES) TOTAL_SINGLES FROM TEAMSTATS;

  查找多个列的和:

    SELECT SUM(SINGLES) TOTAL_SINGLES, SUM(DOUBLES) TOTAL_DOUBLES, SUM(HR) TOTAL_HR FROM TEAMSTATS;

AVG: 返回某一列的平均值,只能对数字进行计算。

  计算漏球的平均数:SELECT AVG(SO) AVE_STRIKE_OUTS FROM TEAMSTATS;

MAX: 返回某一列的最大值,既可以处理数值也可以处理字符串。

  查找打点最高的记录:SELECT MAX(HITS) FROM TEAMSTATS;

MIN: 与MAX相似,返回某一列的最小值,既可以处理数值也可以处理字符串。

  可以同时使用MAX和MIN获得数值的界限:SELECT MIN(AB), MAX(AB) FROM TEAMSTATS;

VARIANCE: 方差,且只应用于数值。

  SELECT VARIANCE(HITS) FROM TEAMSTATS;

STDDEV: 返回标准差,且只应用于数值。

  SELECT STDDEV(HITS) FROM TEAMSTATS;

日期和时间函数

  

ADD_MONTHS: 将给定的日期增加一个月

  计划推迟两个月:SELECT TASK, STARTDATE, ENDDATE ORIGINAL_END, ADD_MONTHS(ENDDATE,2) FROM PROJECT;

LAST_DAY: 返回指定月份的最后一天

  在ENDDATE列中给出月份的最后一天是几号:SELECT ENDDATE, LAST_DAY(ENDDATE) FROM PROJECT;

MONTHS_BETWEEN: 返回给定两个日期之间的间隔月数,即两个日期中间隔了几个月

  查看每个项目持续的时间:

    SELECT TASK, STARTDATE,ENDDATE,MONTHS_BETWEEN(STARTDATE,ENDDATE) DURATION FROM PROJECT;

  显示所有在1995年5月19日以前的比赛:

    SELECT * FROM PROJECT WHERE MONTHS_BETWEEN('19 MAY 95',STARTDATE)>0;

NEW_TIME:把时间调整到你所在的时区

NEXT_DAY: 将返回与指定日期在同一个星期或之后一个星期内的,你所要求的星期天数的确切日期:

SYSDATE: 返回系统的日期和时间

  返回系统日期:SELECT DISTINCT SYSDATE FROM PROJECT;

  查找今天启动的项目:SELECT * FROM PROJECT WHERE STARTDATE>SYSDATE;

数学函数:

  

ABS:返回给定数字的绝对值

  返回A列的绝对值:SELECT ABS(A) ABS_VALUE FROM NUMBERS;

CEIL和FLOOR: 返回与给定参数相等或比给定参数大的最小整数,FLOOR返回与给定参数相等或比给定参数小的最大整数

  SELECT B,CEIL(B) CEILING FROM NUMBERS;

  SELECT A,FLOOR(A) FLOOR FROM NUMBERS;

COS,COSH,SIN,SINH,TAN,TANH:返回给定参数的三角函数值,默认的参数认定为弧度制。

EXP: 返回以指定的参数为指数,以e为底数的幂值。

LN和LOG: 两个对数函数,其中LN是返回给定参数的自然对数。

MOD:取模运算

  计算A与B相除后的余数:SELECT A,B,MOD(A,B) FROM NUMBERS;

POWER: 返回某一个数对另一个数的幂,第一个参数为底数,第二个指数。

SIGN: 如果参数的值为负数,那么SIGN返回-1,如果参数的值为正数,那么SIGN返回1,如果参数为零,则返回零。

SQRT: 返回参数的平方根,负数不能开平方,所以不能应用于负数。

字符函数

CHR: 返回与所给数值参数等当的字符,返回的字符取决于数据库所依赖的字符集。

CONCAT: 连接两个字符串

  SELECT CONCAT(FIRSTNAME,LASTNAME) "FIRST AND LAST NAMES" FROM CHARACTERS;

INITCAP: 该函数将参数的第一个字母变为大写,此外其它的字母转换为小写。

  SELECT FIRSTNAME BEFORE, INITCAP(FIRSTNAME) AFTER FROM CHARACTERS;

LOWER和UPPER:LOWER将参数转换为全部小写字母而UPPER则把参数全部转换成大写

  配合UPDATE函数把数据库的内容转变为小写字母:UPDATE CHARACTERS SET FIRSTNAME='kelly' WHERE FIRSTNAME='KELLY';

  SELECT FIRSTNAME,UPPER(FIRSTNAME),LOWER(FIRSTNAME) FROM CHARACTERS;

LPAD,RPAD: 这两个函数最少需要两个参数,最多需要三个参数。第一个参数是需要处理的字符串,第二个参数是需要将字符串扩充的宽度,第三个  参数表示加宽部分用什么字符来做填补,第三个参数的默认值为空格,但也可以是单个的字符或字符串。

  SELECT LASTNAME,LPAD(LASTNAME,20,'*') FROM CHARACTERS;

    

  SELECT LASTNAME,RPAD(LASTNAME,20,'*') FROM CHARACTERS;

    

LTRIM与RTRIM: 至少需要一个参数,最多允许两个参数。第一个参数与LPAD和PRAD类似,是一个字符串,第二个参数也是一个字符或字符串,默认则是空格,如果第二个参数不是空格的话,那么该函数将会像剪除空格那样剪除所指出的字符,如下例:

  SELECT LASTNAME,RTRIM(LASTNAME) FROM CHARASTERS;

  

  剪除第三行和第五行的字符C: SELECT LASTNAME,LTRIM(LASTNAME,'C') FROM CHARACTERS;

REPLACE: 需要三个参数,第一个是需要搜索的字符串,第二个是搜索的内容,第三个是需要替换成的字符串,假如第三个参数省略或者是NULL,将  只执行搜索操作而不会替换任何内容。

  SELECT LASTNAME, REPLACE(LASTNAME, 'ST','**') REPLACEMENT FROM CHARACTERS;

SUBSTR: 需要三个参数,输出字符串的一部分,第一个参数为目标字符串,第二个是要输出的子串的起点,第三个是要输出的子串的长度。

  SELECT FIRSTNAME,SUBSTR(FIRSTNAME,2,3) FROM CHARACTERS;

  如果第二个参数为负数,则从源串的尾部开始向前定位至负数的绝对值的位置

TRANSLATE: 需要三个参数,第一个是目标字符串,源字符串,目的字符串,在目标字符串与源字符串中均出现的字符将会被替换成对应的目的字符  串的字符,这个函数对大小写是敏感的。

  SELECT FIRSTNAME,TRANSLATE(FIRSTNAME '0123456789ABCDEFDHIJKLMNOPQRSTUVWXYZ','NNNNNNNNNNAAAAAAAAAAAAAAAAAAAAAAAAAAAA') FROM CHARACTERS;

  

INSTR: 第一个参数时目标字符串,第二个参数时匹配的内容,第三和第四个参数是数字,用以指定开始搜索的起点以及指出第几个满足条件的将会被  返回,如果第三个数值为负数,将会从后向前搜索。

  从字符串的第二个字符开始搜索,并返回第一个以O开头的字符的位置:

  SELECT LASTNAME, INSTR(LASTNAME, 'O',2,1) FROM CHARACTERS;

LENGTH:返回指定字符串的长度

  SELECT FIRSTNAME,LENGTH(RTRIM(FIRSTNAME)) FROM CHARACTERS;使用了函数RTRIM,否则将全部返回15,包括空格

转换函数

TO_CHAR: 将数字转换为字符型

  SELECT TESTNUM,TO_CHAR(TESTNUM) FROM CONVERT;

TO_NUMBER: 将字符串型转换为数值型

  SELECT NAME,TESTNUM,TESTNUM*TO_NUMBER(NAME) FROM CONVERT;

GREATEST与LEAST: 返回几个表达式中最大的或最小的,这两个函数可以处理字符也可以处理数字。

  SELECT GREATEST('ALPHA','BRAVO','FOXTROT','DELTA') FROM CONVERT;

    不写FROM会出错,由于给定的表有三行,所以返回了三个数据。

    

  SELECT LEAST(34, 567,3,45,1090) FROM CONVERT;

    

USER: 返回当前使用数据库的用户的名字

  SELECT USER FROM CONVERT;

  

SQL_4_函数的更多相关文章

  1. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  2. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  3. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  4. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  5. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  6. javascript中的this与函数讲解

    前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...

  7. 复杂的 Hash 函数组合有意义吗?

    很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...

  8. JS核心系列:浅谈函数的作用域

    一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...

  9. C++中的时间函数

    C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...

随机推荐

  1. 洪水 Pow

    Description AKD市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD市全被水淹没了.Blue Mary,AKD市的市长,召集了他的所有顾问(包括你)参加一个紧急会议.经过细致的商 ...

  2. CSS布局技巧之——各种居中

    居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...

  3. php 判断字符串中是否包含另一个字符串 strpos

    strpos (PHP 4, PHP 5, PHP 7) strpos — 查找字符串首次出现的位置 说明 strpos ( string $haystack ,  $needle [, int $o ...

  4. 织梦dedecms后台登陆密码充值工具

    下载后解压,根据自己语言版本,把文件radminpass.php放入网站根目录下执行即可 点击下载:织梦dedecms后台登陆密码充值工具

  5. iOS VIPER架构(二)

    第一篇文章对VIPER进行了简单的介绍,这篇文章将从VIPER的源头开始,比较现有的几种VIPER实现,对VIPER进行进一步的职责剖析,并对各种细节实现问题进行挖掘和探讨.最后给出两个完整的VIPE ...

  6. POJ 1651 Multiplication Puzzle (区间DP,经典)

    题意: 给出一个序列,共n个正整数,要求将区间[2,n-1]全部删去,只剩下a[1]和a[n],也就是一共需要删除n-2个数字,但是每次只能删除一个数字,且会获得该数字与其旁边两个数字的积的分数,问最 ...

  7. UWP开发:自动生成迷宫&自动寻路算法(1)

    (1)前端篇 首先,我们创建一个新的Universal Windows Platform程序.这些小方块是通过GridView来罗列的,这样可以避免MainPaga.xaml的<Rectangl ...

  8. method 'redisConnectionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError

    spring boot 整合redis是报了如下错误 org.springframework.beans.factory.UnsatisfiedDependencyException: Error c ...

  9. 使用nodejs和Java访问远程服务器的服务

    既然这篇文章用的是nodejs和Java访问远程服务器的服务,那么咱们先用另一门编程语言,SAP的ABAP(我日常工作使用得最多的编程语言)来开发一个服务吧. 这是我用ABAP编程语言实现服务的类:Z ...

  10. 【vue iview】项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了。

    [vue iview]项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了.