001、字符
length/lengthb 字符数(1个汉字1个字符) / 字节数(1个汉字2个字节)
ltrim/rtrim/trim 删除空格
lower/upper 大小写转换
select length('abc') from dual;
select substr(ename, 1, 3) from emp; 从第一个字符开始截,一共截3个字符
substr('abcdefg',2,3) => bcd 从第2个位置取3个
substr(str,length(str)-n+1,n); 右取串
select chr(65) from dual; //ASCII码转换成字符
select ascii('A') from dual; //字符转换成ASCII码
002、日期
select sysdate from dual;
select current_date from dual;
select next_day(sysdate,'星期一') from dual; 下一个星期一是哪一天
alter SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
003、to_char
数值格式
9代表一位数字,没有就不显示,小数点后的数字必须显示
select to_char(sal, '$99,999.9999') from emp;
0代表一位数字,该位没有数字,则显示0
select to_char(sal, '$00,000.0000') from emp;
货币格式,L指本地货币
select to_char(sal, 'L99,999.9999') from emp;
日期格式
select to_char(hiredate, 'yyyy-mm-dd hh:mi:ss') from emp;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy-mom-dd hh:mi:ss') from dual;
004、to_date
select to_date('2008-12月-19') from dual;
select to_date('2008-12-19','yyyy-mm-dd') from dual;
输出1981年2月20日后入职的数据
select ename, hiredate from emp where hiredate > to_date('1981-2-20', 'yyyy-mm-dd');
005、to_number
select to_number('2008') from dual;
薪水大于$1,250.00的员工
select sal from emp where sal > to_number('$1,250.00', '$9,999.99');
006、round
四舍五入
select round(23.6552) from dual;
四舍五入到小数点后2位
select round(23.6552, 2) from dual;
四舍五入到十位数:20
select round(23.6552, -1) from dual;
007、nvl
如果comm的值是空值用0替代,否则直接输出
select ename, sal*12 + nvl(comm, 0) from emp;
008、||
连接字符串
select 'Oracle '||'10g'||'R2' from dual;
009、decode
查询姓别为'男'和'女'的分别有多少人:
select sum(decode(sex,'男',1,0)) man,sum(decode(sex,'女',1,0)) woman from staff;
010、聚集函数
sum,avg,
今天做了1个数据导入需求,文本记录有12万多条,TXT文件大小6M多,因为以前都是用oracle的text import方式导入,刚试验了一下,不灵验,当导入到2万多条的时候,PLSQL就当掉了,走不动了。
因为考虑到1次导入,所有决定采用SQLLOADER的方式。 ......