SQL_3_单行函数

函数是处理查询结果的方法。

单行函数:对结果集的每一行都进行运算,得到一个值。(除了空值)

dual表:它是一个只有一个字段一行记录的表,也叫做伪表。


单行函数

可以嵌套,用在select、where、order by语句中。

1、字符函数:

参数:字符数据。  返回值:字符或数字。

  (1)、大小写转换函数

      lower(str),转为小写
      upper(str),转为大写
      initcap(str),字符串中每个单词的首字母大写

  (2)、字符处理函数

      连接

      concat(str1,str2),连接两个字符串为一个字符串,可以用来做两个字段的连接。

      截取
      substr(str,int),截取字符串,int为开始截取的位置,int1为-3时,从倒数第三个开始截取。

      substr(str,int1,int2),截取指定长度字符串,int1为开始截取的位置,int2为截取的长度。

      长度

      length(str),返回str的长度。

      查找

      instr(str1,str2),返回str2在str1中的位置。
      instr(str1,str2,int1,int2),返回str2在str1中,第int1个字符开始,第int2次出现的位置。若int1为-3,则从后往前找

      填充

      Lpad(str,int,str),使用字符从左侧填充字符串,长度为指定长度

      Rpad(str,int,str),使用字符从右侧填充字符串,长度为指定长度

      去除头尾

      trim(char from string),去掉头部和尾部的指定字符。省略了both

      trim(leading char from string),去掉头部的指定字符。

      trim(trailing char from string),去掉尾部的指定字符。

      替换

      replace(str1,str2,str3),把str1中的str2替换成str3。

      按字符翻译

      translate('abcd','ad','13'),结果为  1bc3 。

2、数字函数

参数:数字数据。  返回值:数字数据。

      取绝对值:      abs(number)

      向上取整:      ceil(number)

      向下取整:      floor(number)

      m的n次方:      power(m,n)

      四舍五入取值

      round(double,int),四舍五入取值,int为0时,取整数部分,int大于0时,取相应的小数位,int为-1时,取整数,个位四舍五入。

      round(double),四舍五入取整数。

      直接截取值

      trunc(double,int),不会四舍五入,之间舍去值,int为0时,取整数部分,int大于0时,取相应的小数位,int为-1时,取整数,个位置为0。

      trunc(double),取整数。

      取余数

      mod(被除数,除数),取余数。

3、日期函数

基础知识:

      获取当前时间:

          Oracle:sysdate

          MySQL:sysdate()、now()

      date - date =天数

      date + number= date加天数

      date - number= date减天数

函数:  

      间隔月

      months_between(date1,date2),两个日期直接相隔几个月,date2大的时候返回值为负数,若不足一个月会返回小数

      时间加月

      add_months(date,int),加int个月到日期,int为负数则为减。

      查找下个星期几是几号

      next_day(date,int/string),下个星期几是几号。参数为int的时候,1-7对应星期日到星期一;参数为string时候,格式为:'星期日'

      月的最后一天

      last_day(date),查看这个月的最后一天。

      截取时间

      round(date),四舍五入取天数,过了中午12点,则为第二天了。

      round(date,str),四舍五入天数,str可以为  'yy' 表示精确到年,'mm'表示精确到月,'dd'表示精确到日。

      trunc(date),截取取天数,过了中午12点,则为第二天了。

      trunc(date,str),截取天数,str可以为  'yy' 表示精确到年,'mm'表示精确到月,'dd'表示精确到日。

4、类型转换函数

基础知识:

      数据类型转换分为隐式转换(自动转换)和显示转换(手动使用函数进行转换)。

      隐式转换存在性能影响和不便于阅读,所以不推荐使用。

函数:

      转为字符串

      to_char(date,'format'),按照指定格式把日期或者数字转为字符串。

      格式:yyyy-mm-dd-day-HH24-mi-ss',表示年 月 日 星期 时 分 秒。模板中,常量使用双引号括起来才可以使用。

      例子:

select to_char(sysdate,'yyyy"年"-mm"月"-dd"日"-day-HH24:mi:ss')
from dual

      to_char(number,'format'),按照指定格式转为字符串。

      格式:

          '9' ,表示一个数字,若实际数字长度不够,则为空格。

          '0',表示一个数字,若实际数字长度不够,则为0。'.',表示小数点。

          '$',表示在字符串开头加一个美元符号,它可在任意位置。

          'L',表示一个本地货币符合,它必须在格式开头。

          fm,去掉字符串前后的空格。

      注意:若规定的格式长度小于实际字符串长度,则会输出“################”

      例子:

select to_char(1234567.889,'fmL99,999,999.99')
from dual

      转为数字

      to_number(string,'format'),字符串的格式必须为format能够包含才能转换成功。

      转为日期

      to_date(string,'format'),字符串格式必须为format能够包含才能转换成功。

5、通用函数(处理空值)

      空值转为指定值

      nvl(表达式,value),如果表达式的值为空值,则返回指定的值。

      nvl2(表达式,参数1,参数2),如果表达式为空,则给返回参数2,否则返回参数1。

      值相等时为空值

      NuLLif(参数1,参数2),比较两个表达式,如果相等,返回null,如果不相等,返回参数1。

      查找非空值

      coalesce(参数1,参数2,参数3,参数4.....),返回第一个非空值。

6、条件表达式

      case ...  when ... then ...  end表达式。找不到则返回else的值,若没有else句子,则为空值。

select 
case 1100 when 12 then 12 
         when 22 then 22 
         when 100 then 89 
         else 998
end
from dual

Oracle中:

      decode(表达式,参数1,值1,参数2,值2,.....,参数n,值n,值n+1),表达式等于某个参数时,返回对应的值,若没找到,返回结尾指定的n+1,若没有指定n+1则为空。

 

posted @ 2022-12-12 00:07  在博客做笔记的路人甲  阅读(64)  评论(0编辑  收藏  举报