Oracle 的函数分为基本函数和分析函数,
其中基本函数是最常用的,而分析函数的话,
在这篇博文中,则只是介绍最常用的 Oracle 基本函数。
介绍呢,会依照下面的路线进行,
字符函数
数字函数
日期函数
转换函数
组函数
1. ASCII(c)
其中 c 呢是一个字符串参数,这个函数的作用就是通过传递进去的字符串,
然后返回这个字符串第一个字母的 ASCII 码值,
2. CHR(i)
其中的 i 是一个数字,然后会返回一个用十进制表示的字符,也就是 ASCII(c)的逆函数
3. CONCAT(c1,c2)
这个函数中有两个字符串参数,这个函数的功能就是将两个字符串拼接起来
4. INITCAP(c1)
这个函数比较特殊,其拥有一个字符串参数 c1 ,
它的功能是将字符串中的每个单词的第一个字母大写,而其他字母小写返回,
其中单词又空格,控制字符,标点符号来限制
5. INSTR(c1,c2,i,j)
这个函数呢,其中参数比较多,有四个,c1 和 c2 为字符串,而 i , j 则为数字,
i 和 j 两个参数是可选的,也就是说可以没有这两个参数,这是因为这两个参数均有默认值,
均为 1
这个函数的功能为,返回 c2 在 c1 中第 j 次出现的位置,其实这也就是一个搜索过程,
而搜索的起始位置则是由 i 确定的,i 确定从 c1 中第 i 个字符开始匹配
6. LENGTH(c)
这个函数呢,功能就很明显了,就是返回传递进去的参数 c 这个字符串的长度
7. LOWER(c)
这个函数的功能也是比较明显的,
就是将传递进来的参数即一个字符串 c 全部转换为小写后返回
8. UPPER(c)
这个函数的功能就是将 c 这个字符串中的字符全部大写后返回
9. LPAD(c1,i,c2)
其中有三个参数,c1 和 c2 是字符串,而 i 则为数字,
如果 i 小于 c1 的长度,那么只返回 i 那么长的 c1 的字符,其他的将被截去,
否则在 c1 的左侧使用 c2 字符串补足到长度 i ,可以多次重复,
c2 的默认值为单空格。这个函数返回的字符串的长度一定是 i
10. RPAD(c1,i,c2)
这个函数呢和上面的功能差不多,只不过上面的 LPAD 函数是从左到右补充,
而这个 RPAD 则是从右到左进行补充,
也就是当 i 的值小于 c1 的长度时,直接将 c1 进行截取然后返回长度为 i 的字符串,
当 i 的值大于 c1 的长度时,便使用 c2 对 c1 从右到左进行补充
11. LTRIM(c1,c2)
这个函数的功能是把 c1 最左边的字符去掉,使其第一个字符不在 c2 这个字符串中
如果不能理解的,请注意比较下面的截图中的各个结果
12. RTRIM(c1,c2)
这个函数也和上面的函数功能类似,只不过不是从左边开始比较了,而是从字符串 c1 的右边比较,
使 c1 的最右边的字母不在 c2 这个字符串中
13. REPLACE(c1,c2,c3)
这个函数的作用比较特殊,是使用 c3 来代替在 c1 中出现的 c2 ,然后将结果返回
14. SUBSTR(c1,i,j)
上面的参数中 c1 是字符串,i 和 j 是数字,而且 j 这个参数是可选的,即是可以没有的,
从 c1 的第 i 位开始返回长度为 j 的截取后的字符串,如果 j 位空,则直到 c1 的尾部
说白了你,就是 C# 中的 substring 函数
15. TRANSLATE(c1,c2,c3)
这个函数的功能就是将 c1 和 c2 中相同的字符使用 c3 来代替,然后再返回结果
这个函数呢,由于比较难以解释,所以还需按着下面的截图来说明,
比如,BaoBeiMe 中的第一个字母和 Bei 中的第一个字母是相同的,
故使用 Xza 中的第一个字母取代,
而 BaoBeiMe 中的 Bei 和 Bei 中的三个字符全部匹配,所以必须使用 Xza 一起进行替代 Bei
16. TRIM(c1 from c2)
该函数用户从字符串的头部,尾部和两端截断特定的字符,
c1 为要截取的字符,c2 为源字符串
再是数字函数
这里说到数学函数呢,说实在的,和 C# 里的 Math 下的数学函数差不多了,
需要注意的就是在 Oracle 中所有的三角函数的参数和值都是弧度而非角度。
1. ABS(n)
这个函数见多了的,就是求 n 的绝对值
2. CEIL(n)
返回 >= n 的最小整数
3. FLOOR(n)
返回 <= n 的最大整数
4. SIN(n)
返回弧度为 n 的正弦值
5. COS(n)
返回弧度为 n 的余弦值
6. TAN(n)
返回弧度为 n 的正切值
7. EXP(n)
返回 e 的 n 次幂值即 e^n
8. POWER(n1,n2)
返回 n1 的 n2 次方,即 n1^n2
9. MOD(n1,n2)
返回 n1 除以 n2 的余数,即 n1%n2
10 . LN(n)
返回 n 的自然对数
11. LOG(n1,n2)
返回以 n1 为底的 n2 的对数
12. SQRT(n)
返回 n 的平方根
13. TRUNC(n1,n2)
返回截尾到 n2 位小数的 n1 的值,n2 的默认值为 0,
当 n2 为默认值设置时,会将 n1 截尾为整数,如果 n2 为负数,
就截尾在小数点左边的相应的位上。
14. ROUND(n1,n2)
返回四舍五入小数点右边 n2 位的 n1 的值,n2 的默认值为 0
15. SIGN(n)
n < 0 则返回 –1
n > 0 则返回 1
n = 0 则返回 0
再是日期函数
既然是日期函数的话,那么肯定操作的就是日期类型的数据了,
1. SYSDATE
这个函数呢,比较特殊,没有参数,所以也不需要加什么括号之类的了,
直接裸用就 OK 了,这个函数的作用就是返回当前的时间和日期
2. ADD_MONTHS(d,i)
返回日期 d 加上 i 个月后的结果, i 可以是任意整数。
3. LAST_DAY(d)
返回日期 d 所在月份的最后一天
4. MONTHS_BETWEEN(d1,d2)
返回日期 d1 和 日期 d2 之间月的数目
5. TRUNC(d,format)
返回由 format 指定的单位的日期 d
比如您可以指定 format 为 y ,则表明是返回指定日期所在的年(以年为单位)
如果指定 format 为 mm ,则表明是返回指定日期所在的月(以月为单位)
如果指定 format 为 d ,则表明是返回指定日期所在的天(以天为单位)
再是转换函数
转换函数,用于在多种数据类型之间转换
1. ROWIDTOCHAR(rowid)
这个函数的功能就是将类型为 ROWID 的参数 rowid 转换为字符串类型
2. CHARTOROWID(c)
这个函数呢,和上面的 ROWIDTOCHAR 的功能相反,是将字符串 c 转换为 ROWID 数据类型
3. TO_CHAR(x,format)
这个函数的功能就是将一个参数 x 转换为字符串类型,
其中 x 可以是 number 或者 date 类型
4. TO_DATE(c,format)
将字符串转换为 Date 数据类型
5. TO_NUMBER(c)
将一个字符串参数转换为 number 数据类型