6、Oracle单行函数

1、概念

单行函数:
       针对sql语句影响的每一行 都做处理 并且针对每一行都会返回一个结果
       sql语句影响多少行就返回多少个结果
组函数:
       针对sql语句影响的所有行 只返回一个结果
       无论sql影响多少行 只返回一个结果


2、举例

单行函数:
select first_name,upper(first_name) name from s_emp where id=1;
select first_name,upper(first_name) name from s_emp where id=1;
select first_name,upper(first_name) name from s_emp where id=1;

组函数:
select count(first_name) cname from s_emp where id=1;
select count(first_name) canme from s_emp where id>1;
select  count(first_name) cname  from  s_emp where  id<1;


3、准备学习 oracle数据库中单行函数

select upper(first_name) name,first_name from s_emp;
为了方便学习 引入一个单行 单列的表 dual
select * from dual;


4、Oracle数据库中 处理字符串的单行函数

upper(par1) 变大写 如: select upper('hello') from dual;
lower(par2) 变小写 如: select lower('HEllo') from dual;

initcap(par1) 每个单词首字母变大写 如: select initcap('one world one dream') from dual;
length(par1) 求长度 如:select length('hello') from dual;
concat(par1,par2) 连接两个字符串 如: select concat('a','b') from dual;
nvl(par1,par2) nvl 可以处理任何类型 要求par1 和 par2 类型保持一致
substr(par1,par2,par3)
        par1    要处理的字符串或者字段
        par2    截取的位置 编号从1 开始        可是负数 -1 代表最后一个字符
        par3    截取的长度
        select substr('hello',0,2) from dual;
        select substr('hello',1,2) from dual;
        select  substr('hello',2,2)  from dual;

------------------------------------------------------------------------------------------
如:
显示 s_emp 表中的first_name 和 first_name 对应的前三个字符
    select first_name,substr(first_name,1,3) from s_emp;

显示 s_emp 表中的first_name 和 first_name 对应的后三个字符
    select first_name,substr(first_name,-3,3) from s_emp;

replace(par1,par2,par3)
         par1     要处理的字符串
         par2     被替换的内容
         par3     替换成什么
    如:select replace('one' world one dream','one','two') from dual;


5、处理数字的函数

round(par1,par2)    四舍五入
         par1      要处理的数字
         par2      处理的精确 默认是0 可以省略
保留小数点后一位 看第二位小数
    select round(9.58,1) from dual;
对小数点前一位进行四舍五入
    select round(9.58,-1) from dual;
------------------------------------------------------------------------------------------
trunc(par1,par2) 截取函数
          par1      要处理的数字
          par2      处理的精度  默认是 0,可以省略
    select trunc(9.58) from dual;
    select trunc(12.88) from dual;
保留小数点后一位 不看第二位
select trunc(9.58,1) from dual;
对小数点前一位 进行截取
select trunc(9.58,-1) from dual;


6、格式显示函数

to_char(par1,par2)
         par1 要处理的数据,还可以处理日期
         par2 是显示格式 以字符串形式出现 可以省略 如果省略代表把某个类型变成 字符串类型 

FM       格式的开头 是format格式的缩写 可以省略
¥       美元符号
L        本地货币符号 ¥
9        小数点前面 代表 0-9 的任意数字
         小数点后面 代表 1-9 的任意数字
0        小数点前面代表 强制显示前导零 如 12345 => 012,234
         小数点后面代表 0-9 的任意数字
,        千分位分隔符
.        小数点

select salary,to_char(salary,'FM$099,999.99') from s_emp;
select salary,to_char(salary,'FM$099,999.00') from s_emp;

select to_char(12345.86,'$099,999.99') from dual;
select to_char(12345.86,'$099,999.00') from dual;

如果使用 L  则看的是 环境变量 NLS_LANG 
select  to_char(12345.86,'L099,999.00') from dual;


7、函数嵌套

把一个函数的返回值 作为另一个函数的参数
如:显示s_emp 表中的first_name 和 first_name 前三个字符,然后把这三个字符变大写
select first_name,upper(substr(first_name,1,3)) from s_emp;

如:显示s_emp 表中的first_name 和 first_name 后三个字符 然后把这三个字符变大写
select first_name,upper(substr(first_name,length(first_name)-2,3)) from s_emp;

显示 s_emp 表中的 id first_name manager_id,如果manager_id是null,则显示成BOSS
select id,first_name,nvl(to_char(manager_id),'BOSS')  mid  from  s_emp;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值