Ø  简介

本文主要来梳理下 Oracle 中的常用的系统函数,掌握这些函数的使用,对于我们编写 SQL 语句或 PL/SQL 代码时很有帮助,所以这也是必须掌握的知识点。

 

Oracle 中或者其他数据库中都存在两大类函数:

Ø  第一类,单行函数,表现形式为对每一行中指定的数据进行计算或处理,并返回计算后的结果。例如:

SELECT REPLACE(ename, 'A', 'a') ename, t.* FROM emp t;

Oracle 常用系统函数

 

Ø  第二类,则是多行函数,表现形式为将多行的数据进行计算或处理,并返回计算后的结果,例如:

SELECT t.deptno, AVG(sal) avgsal FROM emp t GROUP BY deptno;

Oracle 常用系统函数

表示,将分组后的多行进行平均值计算,即多行计算函数。

 

本文主要包括以下函数介绍:

1.   字符串函数

2.   数值函数

3.   日期函数

4.   转换函数

5.   NULL 函数

6.   聚合函数

7.   系统函数

8.   其他函数

 

1.   字符串函数

1)   length

语法:length(p_string)

解释:返回字符串的字符长度,如果 p_string NULL 或为空,则返回 NULL

示例:

SELECT length('ab 中国') col1, length(' ') Col2, length('') Col3, length(NULL) Col4 FROM dual;

Oracle 常用系统函数

 

2)   lengthb

语法:lengthb(p_string)

解释:返回字符串的字节长度,如果 p_string NULL 或为空,则返回 NULL

示例:

SELECT lengthb('ab 中国') col1, lengthb(' ') Col2, lengthb('') Col3, lengthb(NULL) Col4 FROM dual;

Oracle 常用系统函数

说明:Col1 中包含两个中文“中国”,一个中文占两个字节,所以一共是7个字节。

 

3)   ascii

语法:ascii(p_character)

参数:

p_character: 要检索 ASCII 码的字符,如果包含多个字符,只返回第一个字符的 ASCII 码,忽略之后的所有字符。

解释:返回指定字符对应的 ASCII 码。该函数与 char 函数功能是相反的。

示例:

SELECT ascii('') col1, ascii('A') col2, ascii('a') col3, ascii('0') col4, ascii(' ') col5, ascii('abc') col6 FROM dual;

Oracle 常用系统函数

 

4)   chr

语法:chr(p_number [using nchar_cs])

参数:

p_number: 用于检索的 ASCII 码数字代码。

using nchar_cs: 如果指定该参数,将返回国家字符集相对应的字符。

解释:返回指定 ASCII 码对应的字符。该函数与 ascii 函数功能是相反的。

示例:

SELECT chr(49390) col1, chr(65) col1, chr(97) col3, chr(48) col4, chr(32) col5, chr(49390 using nchar_cs) col6 FROM dual;

Oracle 常用系统函数

 

5)   cancat

语法:cancat(p_value1, p_value2)

参数:

p_value1: 要连接的第一个值(可以是非字符类型);

p_value2: 要连接的第二个值(可以是非字符类型);

解释:用于连接两个值,这个值可以是数字、日期、或其他类型。cancat 之所以可以传递非字符类型,应该是在函数内部进行了类型转换(个人分析)。

示例:

SELECT concat('he', 'llo') col1, concat('数字:', 12.5) col2, concat('日期:', sysdate) col3, concat('NULL', NULL) col4 FROM dual;

Oracle 常用系统函数

 

通常情况下,我们连接字符串习惯用"||"连接符,而不是使用 cancat 函数,因为 cancat 函数同时只能连接两个字符串,而"||"连接符可以同时连接多个,例如:

SELECT (123 || 12.5 || sysdate || '很晚了') col1, concat('该睡觉了', '吗?') col2 FROM dual;

Oracle 常用系统函数

 

6)   upper

语法:upper(p_string)

解释:将指定的字符串中的所有字母都转为大写

示例:

SELECT upper('Hello woRld') col1, upper('中国') col2, upper(NULL) col3 FROM dual;

Oracle 常用系统函数

 

7)   lower

语法:lower(p_string)

解释:将指定的字符串中的所有字母都转为小写

示例:

SELECT lower('hEllo ABEAM') col1, lower('中国') col2, lower(NULL) col3 FROM dual;

Oracle 常用系统函数

 

8)   initcap

语法:initcap(p_string)

参数:

p_string: 需要转换的单词字符串。

解释:返回指定单词字符串转换后的字符串,通过(空格、制表符、回车符、换页符、垂直制表符、换行符)分隔每个单词,将首字母转为大写,其他字母全部转为小写。

示例:

SELECT initcap('hello World') col1, initcap('_ello 2orld') col2, initcap('HELLO WORLD') col3, initcap('中国') col4, initcap(NULL) col5 FROM dual;

Oracle 常用系统函数

注意:如果第一个字符不是字母,将继续寻找下一个为字母的字符进行转换,直到遇到第一个为字母的字符。

 

9)   substr

语法:substr(p_string, p_start_position [, p_length])

参数:

p_string: 源字符串;

p_start_position: 提取子字符串的起始位置(包含该位置的子串);

p_length: 可选的。提取子字符串的长度,如果省略该参数,将从 p_start_position 指定的位置提取到源字符串的结尾。

解释:从源字符串中提取子字符串。

示例:

相关文章:

  • 2022-12-23
  • 2021-10-02
  • 2021-09-03
  • 2021-12-12
  • 2021-11-21
  • 2021-05-15
猜你喜欢
  • 2021-08-23
  • 2021-10-07
  • 2021-12-09
  • 2021-11-22
  • 2021-08-02
  • 2021-12-20
相关资源
相似解决方案