当前位置:Gxlcms > 数据库问题 > ORACLE学习05-单行函数

ORACLE学习05-单行函数

时间:2021-07-01 10:21:17 帮助过:2人阅读

select lower(‘HELLO WORLD‘) from dual;   -- upper() 将字符串转大写 select upper(‘hello world‘) from dual;   -- initcap() 将字符串首字母大写 select initcap(‘hEllo woRld‘) from dual;
2,字符串截取
-- substr(a,b) a中,第b位开始取,取右边所有的字符 select substr(‘Hello World‘,4) from dual;   -- substr(a,b,c) a中,第b位开始取,取c select substr(‘Hello World‘,4,4) from dual;   -- lpad/rpad(a,n,b) a左/右填充b,直至长度为n select lpad(‘Hello‘,8,‘*‘) ,rpad(‘Hello‘,8,‘*‘) from dual;   -- trim() 去掉前后指定的字符,也可以滤空操作 select trim(‘H‘ from ‘Hello WorldH‘) from dual; select trim(‘ Hello WorldH ‘) from dual;
-- ltrim()/rtrim() 去掉左/右指定的字符,也可以滤空操作   -- replace() 替换指定位置的字符 select replace(‘Hello World‘,‘l‘,‘*‘) from dual;
3,字符串查询
-- instr() 在母串中查找子串,找到返回下标(从1开始),否则返回0 select instr(‘Hello World‘,‘ll‘) from dual;   -- length() 字符数, lengthb() 字节数 select length(‘Hello World‘), lengthb(‘Hello World‘) from dual  
4,字符串拼接
-- 字段连接。使用||符号 select ‘aa‘ || ‘bb‘ from dual;   -- concat(a,b) 拼接a和b select concat(‘a‘,‘b‘)||‘转23‘  demo from dual;
 

二、数字函数

-- round() 四舍五入,第一个参数为要进行四舍五入的数,第二个参数为保留的位数,大于0的为小数点后,小于0的为小数点前的 select round(12.345, 2),round(12.345, 1), round(12.345, 0),round(12.345, -1), round(12.345, -2) from dual; -- trunc() 截断,第一个参数为要进行截断的数,第二个参数为保留的位数,大于0的为小数点后,小于0的为小数点前的 select trunc(12.345, 2),trunc(12.345, 1), trunc(12.345, 0), trunc(12.345, -1), trunc(12.345, -2) from dual; -- mod() 取模操作 select mod(10,3) from dual;  

三、日期函数

-- months_between(maxDate,minDate) 表示两个日期的月份之差 select months_between(sysdate,sysdate - 300) from dual;   -- add_months(date,n) 表示给指定的日期加n个月数 select add_months(sysdate,3) from dual;   -- next_day(date) 表示以当前时间为基准,下一个"目标日"的日期 select next_day(sysdate,‘星期二‘) from dual;   -- last_day(date) 计算当前日期所在月份的最后一天 select last_day(sysdate) from dual;   -- round(date,[param])对日期进行四舍五入,默认四舍五入到天 select round(sysdate,‘year‘) from dual;   -- trunc(date,[param])表示对日期进行截取 select trunc(sysdate) from dual;  

四、转换函数

-- to_char(字符串/列,格式字符串) 将日期或者是数字变为字符串显示, 9 代表一位数字 select to_char(sysdate,‘yyyy-mm-dd‘),to_char(sysdate,‘yyyy‘) year, to_char(sysdate,‘mm‘) month, to_char(sysdate,‘dd‘) day from dual; select to_char(sysdate,‘fmyyyy-mm-dd hh24:mi:ss‘) day from dual; select to_char(10000,‘L999,999,999,999,999‘) from dual; -- to_date(字符串,格式字符串) 将字符串变为date数据显示 select to_date(‘2016-3-18‘,‘yyyy-mm-dd‘) from dual; -- to_number(字符串) 将字符串变为数字显示 select to_number(‘1‘) + to_number(‘2‘) from dual;  

五、通用函数

-- nvl(a,b) a表达式为空(null,‘‘)时,返回b表达式 select nvl(‘‘,200) from dual;   -- nvl2(a,b,c) 如果a表达式的值不为空,显示表达式b的值,否则(为空)显示表达式c的值 select nvl2(‘‘,‘b‘,‘c‘) from dual;   -- nullif(a,b) 如果前后两个表达式的内容相等的,那就返回空,否则,返回第一个表达式的值 select nullif(5,5) from dual;   -- coalesce(a,b,c...) 用来匹配多个字段的值,如果表达式1的值为空,显示表达式2的值,如果表达式2也为空,显示表达式3的值,依次类推 select coalesce(‘‘,null,‘‘,‘a‘) from dual;   -- decode(被对比参数,对比参数1,返回值1,对比参数2,返回值2,....) 函数非常类似于程序中的ifelse…语句 select decode(1,0,‘0-0‘,1,‘1-1‘,2,‘2-2‘) from dual;

六、case when 语句

--简单Case函数   CASE sex WHEN ‘1‘ THEN ‘男‘ WHEN ‘2‘ THEN ‘女‘ ELSE ‘其他‘ END   --Case搜索函数   CASE WHEN sex = ‘1‘ THEN ‘男‘ WHEN sex = ‘2‘ THEN ‘女‘ ELSE ‘其他‘ END   selct 中的用法 SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位女生*/ ELSE NULL END) 男生数, COUNT (CASE WHEN sex = 2 THEN 1 ELSE NULL END) 女生数 FROM students GROUP BY grade;   where 中的用法 SELECT s.name FROM student s WHERE (CASE WHEN s.class = ‘001‘ THEN 1 WHEN s.class = ‘002‘ THEN 1 ELSE 0 END) = 1

ORACLE学习05-单行函数

标签:

人气教程排行