字符函数
LOWER、UPPER、INITCAP、CONCAT、SUBSTR、LENGTH、INSTR、LPAD、RPAD、TRIM、REPLACE LOWER 将指定字符串内字符变为小写,支持CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB类型 UPPER将指定字符串内字符变为大写,支持CHAR,VARCHAR2,NCHAR INITCAP将指定字符串内第一个字母转换为大写,其他则转换为小写 CONCAT(c1,c2)连接字符串,类似于管道符 || SUBSTR(c1,n1[,n2]) 截取指定长度的字符串。n1=开始长度,n2=截取字符串的长度,如果为空,默认截取到字符串结尾。 LENGTH 返回指定字符串的长度 INSTR(c1,c2[,n1]) 返回c2在c1中的位置(注意:返回是绝对位置)
日期函数 selectsysdate from dual; altersession set nls_date_format='yyyy-mm-dd hh24:mi:ss'; 限定系统永久生效: Linux下在Oracle用户下编辑 .bash_profile文件加入以下内容
exportNLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
MONTHS_BETWEEN : 计算两个日期之间的月份 ADD_MONTHS : 添加月份到日期 NEXT_DAY : 指定到下一周的日期 LAST_DAY : 显示当前日期所在月份的最后一天
转换函数
隐式转换
是指Oracle自动完成的类型转换。在一些带有明显意图的字面值上,可以由oracle服务器自动判断进行数据类型的转换。 (日期转字符) selectlength(sysdate) from dual; #sysdate本来是日期格式的,而length是字符处理函数,这里sysdate隐式转换成了字符型 (字符转数字) selectemployee_id from employees where employee_id='199'; #employee_id本来是number类型,这里字符'199'被隐式转换成数值199。 (字符转数字) select'66.6'+ 22.2 from dual; #'66.6'是定义的字符串,加上数字22.2,oracle内部将字符串转换成数值66.6进行处理。 (数字转字符,字符转数字) select10+('13.5'||11) from dual; #11转换成字符串合并成13.511,然后13.511转换成数值与10相加
显示转换 是强制完成类型转换(推荐),转换函数形式有三种: TO_CHAR、TO_DATE 、TO_NUMBER (日期转字符) createtable aaa as select hire_date,to_char(hire_date,'yyyy-mm-dd') tochar fromemployees; createtable bbb as select hire_date,to_char(hire_date,'fmyyyy-mm-dd') tochar fromemployees; (数字转字符) 9代表数字,L代表浮动的本地货币符号,$浮动的美元符号。如果是中文系统就会显示¥ selectlast_name,to_char(salary,'L999,999.99') from employees; selectlast_name,to_char(salary,'$999,999.99') from employees; 为什么没有正确显示? 字符集不正确,更改环境变量: exportNLS_LANG='SIMPLIFIED CHINESE'_CHINA.AL32UTF8 注意如果是X-Shell、Putty工具,也需要更改工具字符显示编码。 最后注意精度问题,如果位数不够,信息将无法正确显示。 createtable ccc as select last_name,to_char(salary,'$9,999.99') tochar fromemployees; (字符转日期) selectto_date('2020-09-155','yyyy-mm-dd') from dual; TO_DATE('2020-09 --------------------------- 2020-09-1500:00:00
|