OCP题库学习

字符函数
LOWERUPPERINITCAPCONCATSUBSTRLENGTHINSTRLPADRPADTRIMREPLACE
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.2oracle内部将字符串转换成数值66.6进行处理。
(数字转字符,字符转数字)
select10+('13.5'||11) from dual;
#11转换成字符串合并成13.511,然后13.511转换成数值与10相加


显示转换
是强制完成类型转换(推荐),转换函数形式有三种:
TO_CHARTO_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-ShellPutty工具,也需要更改工具字符显示编码。
最后注意精度问题,如果位数不够,信息将无法正确显示。
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



标签: 暂无标签
ruonan

写了 10 篇文章,拥有财富 46,被 0 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

成为第一个吐槽的人

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈