字符函数lower(string), upper(string)大小写转换。select lower('Hello, world!') from dual 得到 hello, world!select upper('Hello, world!') from dual 得到 HELLO, WORLD!length(string)求字串长度。小本上的数据库字符集是 UTF8,对中文字符,一个字符的长度是1, 不知道别的语言集安装,是否会导致中文字符作两个字符(TODO)select length('你好!') from dual; -- 结果为3 substr(string, m, n)string 的 m 到 n 位字符串(从1开始)。例如select substr('Hello, world!', 2, 5) from dual; 结果为 ello,对于中文,可能会依赖于不同的配置环境。小本上设置的字符集是 UTF8,一个汉字作为一个字符,在虚拟机上的字符集是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,对中文的支持也没问题,一个汉字算一个字符。 附:查找 Oracle 使用的编码语句:select userenv('language') from dual;(来源:http://bbs.csdn.net/topics/260020463) replace(string, string_search, string_replace)替换字串。select replace('Hello, world!', 'o', '哦'); 结果为 Hell哦, w哦rld!instr(char1, char2[,m[,n]])找子字串的位置。
结果为2,即字母 e 在 hello 字串的第二个位置。更详细的说明如下: 语法:instr(sourceString,destString,start,appearPosition).
to_char字符转化函数,可以格式化一些数据。格式化日期和在工资前加上货币符号的例子: select to_char(hiredate, 'yyyy-mm-dd hh24:mi:ss') "入职时间",
结果为 to_char(sal, 'L00000.00') "薪水" --L表示显示本地的货币符号 from emp4; TO_CHAR(HIREDATE,'YYYY-MM-DDHH TO_CHAR(SAL,'L0000.00') ------------------------------ ----------------------- 1981-02-26 00:02:00 RMB1520.00 1981-04-01 13:04:15 RMB1700.00 1981-05-01 00:05:00 RMB2850.00 1981-06-09 00:06:00 RMB2950.00 1987-04-19 00:04:00 RMB3333.00 2010-05-01 00:05:00 RMB7000.00 2010-05-01 00:05:00 RMB4567.00 2010-05-01 00:05:00 RMB4233.56 'L9999.99'
'L0000.00' 空位用0补全 另,对 to_char 下面的日期函数部分中也有介绍。 语法:DECODE(value, if1, then1, if2, then2, if3, then3, . . ., else) nvl, nvl2Oracle 中有个怪癖,任何量和 null 运算的结果都是 null,nvl 函数应运而生,它对不同条件下的 null 按需求转化,简单说它的功能可以表述为:“如果该值为 null,那么给这个值赋一个确定值(The function NVL returns the value of its second argument if its first argument is null.)”。在字符串连接时常有这样的用法:如果字符串为 null,那么设置为 '' (空串)。select ename, nvl(comm, 8888) from emp; -- 如果奖金 comm 为空,则设置为 8888
数学函数Oracle 内置了不少常用的数学函数。 三角函数cos, cosh, exp, ln, log, sin, sinh, sqrt, tan, tanh, acos, asin, atan,roundround(n[, m]) 四舍五入,m是小数位,如果m是负数,表示四舍五入到小数点前m位。trunc(n[, m])截取,m的规则同 round 函数 mod(m, n)求余函数,如下两例:select mod(3, 5) from dual; -- result: 3 select mod(5, 3) from dual; -- result: 2 取整floor(x),向上取整ceil(x),向下取整 abs求绝对值 统计函数count, avg, sum 等日期函数日期的默认格式:dd-mon-yy sysdate当前日期,如:
在 d 时间之后的 n月,如:
输出:2013-6-26 23:29:46 注意:并没有类似的 add_days 这种函数 例2,查询入职8月以上的员工
例3,显示满10年的员工信息
例4,显示每个员工在公司的天数
例5,找出各月倒数第三天受雇佣的员工
例2,显示12月份入职的员工
Oracle 默认的日期格式是 DD-MON-YY,可用如下改变日期的默认格式: 例3,
例4,
系统函数sys_context,查询系统信息,它可以查如下内容
输出:SIMPLIFIED CHINESE_CHINA.AL32UTF8 例2,查数据库名称
输出:orcl |