oracle 函数
运算符: 算数运算符: + - * / 连接运算符 || e.g select 'a'||'b'||'c' from dual; 比较运算符 >, =, >=, <, <=, !=, like, between and, is null, in 任何值与null进行运算 都为null ascii('a'); 根据字符 返回编码值 chr(编码值); 根据编码值 返回字符 concat(字段名1,字段名2) 连接两个字符串 initcap(字段名) 返回字符串并将字符串的第一个字母变大写 length(字段名) 返回字段值的长度 lower(字段名) 返回字符串的全部小写 upper(字段名) 返回字段值全部大写 ltrim(字段名) 清除字段值左边的空字符串 rtrim(字段名) 清除字段值右边的空字符串 substr(原字符串,从第几个字符开始(含该字符),截取多少个); select substr ('abcdefg',1,3) from dual; //abc replace(原字符串,被替换的字符串,目标字符串); select substr ('He love rose','He','I') from dual; trim('要去掉的字符(非字符串)' from '目标字符串'); 去掉首尾所有匹配的字符,中间的不去 select trim('s' from 'strsings') from dual; //trsing select trim(leading 's' from 'strsings') from dual; //trsings select trim(trailing 's' from 'strsings') from dual; //strsing abs(数字字段名) 返回数字绝对值 select abs(123) abs1, abs(-1234) abs2 from dual; floor(字段名) 将小数位直接干掉,不做任何处理 select floor(1234.923) from dual; //1234 ceil(字段名) 将小数位干掉后+1,没有小数位就不+1 select ceil(1234.123) from dual; //1235 select ceil(1234) from dual; //1234 mod(被除数,除数) 取余 select mod(10,3) m1, mod(3,3) m2, mod(1,3) m3 from dual; power(原数字,幂) select power(2,3) from dual; round(字段名) 对小数四舍五入成整数 trunc(字段名) 将小数位直接干掉,不做任何处理 select trunc(55.9) from dual; //55 avg(字段名) select avg(age) from tt; count(字段名)/count(*); 获取记录数 若使用字段名,该字段一定不能有NULL值 select count(*) from tt; sum(字段名) 求和 min(字段名) 最小值 max(字段名) 最大值 to_number('1234') 字符串转成数字 select to_number('1234') from dual; 日期常用函数 last_day(date)返回日期date所在月的最后一天 select last_day(sysdate) from dual ; add_months(date,i)返回日期date加上i个月后的日期值 i取正值整数 小数:截取整数后再运算 负数:减去i个月的日期值 months_between(date , date_) 返回两个日期间隔多少个月 结果可能是负数和小数(可以用ceil函数直接进位) next_day(date , 周几) 返回date日期数据的下一个周几的日期 ,例如 4 即下一个周四的日期 Sunday (周日)Monday(周一)Tuesday(周二)Wednesday(周三)Thursday(周四)Friday (周五)Saturday(周六) January一月; February二月; March三月; April 四月; May 五月;June 六月;July七月;August 八月;September 九月;October 十月;November 十一月;December 十二月 比较函数: 参数类型必须一致 第二个参数类型会被转向第一参数类型 不能转换就报错 least(1,3,55,100,2,24) //获取最小值 greatest(1,88,2,33,55) //获取最大值 extract(year/month/day from date) 从参数date中提取指定的数据类型,例如提取年、月、日 例如:select extract(year from sysdate) from dual ; null和任何值进行运算,返回的都是null select * from tablename where column1 = null ; //对于null 不能这样进行比较 正确方法: select * from tablename where column1 is null ; select * from tablename where column1 is not null ; 空值函数 nvl(col_null , col_not_null) 将null值转变成非null值处理 请保持两个参数的类型一致 例如:select sal , comm , sal + nvl(comm , 0 ) as salary from emp ; nvl2(col_null , col_is_null , col_is_not_null) 将null值转变成实际值 作用有点像三目表达式 如果是null 转成col_is_null ,如果不是null,转成col_is_not_null select sal , comm , sal+nvl2( comm , 0 , 1000 ) as salary from emp ;