函数
mod取余
TRUNC (number)截断
TRUNC(number)函数返回截断为n2位小数的n1。如果n2为
省略,则n1被截断为0位。n2可以为负值以截断(置零),n2为小数点后左边两位(-2)。小数点左边一位截断到十位。
Examples
The following examples truncate numbers:
SELECT TRUNC(15.79,1) "Truncate" FROM DUAL;
Truncate
----------
15.7
SELECT TRUNC(15.79,-1) "Truncate" FROM DUAL;
Truncate
----------
10
FLOOR
FLOOR返回等于或小于n的最大整数。数字n始终可以写成整数k和正分数f的和,这样0<=f<1,n=k+f。FLOOR的值是整数k。因此,当且仅当n恰好是整数时,FLOOR值本身就是n。
Examples
The following example returns the largest integer equal to or less than 15.7:
SELECT FLOOR(15.7) "Floor"
FROM DUAL;
Floor
----------
15
CEIL
CEIL返回大于或等于n的最小整数。数字n始终可以写成整数k和正分数f的差,即0<=f<1,n=k-f。CEIL的值是整数k。因此,当且仅当n恰好是整数时,CEIL的数值本身就是n。
此函数将可以隐式转换为数字数据类型的任何数字数据类型或任何非数字数据类型作为参数。函数返回的数据类型与参数的数字数据类型相同。
Examples
The following example returns the smallest integer greater than or equal to the order
total of a specified order:
SELECT order_total, CEIL(order_total)
FROM orders
WHERE order_id = 2434;
ORDER_TOTAL CEIL(ORDER_TOTAL)
----------- -----------------
268651.8 268652
CONCAT
CONCAT返回与char2串联的char1。char1和char2都可以是CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB或NCLOB的任何数据类型。返回的字符串与char1位于同一字符集。其数据类型取决于参数的数据类型。
在两种不同数据类型的串联中,Oracle Database返回导致无损转换的数据类型。因此,如果其中一个参数是LOB,则返回的值是LOB。如果其中一个参数是国家数据类型,则返回的值是国家数据型。例如:
-
CONCAT
(CLOB
,NCLOB
) returnsNCLOB
-
CONCAT
(NCLOB
,NCHAR
) returnsNCLOB
-
CONCAT
(NCLOB
,CHAR
) returnsNCLOB
-
CONCAT
(NCHAR
,CLOB
) returnsNCLOB
Examples
This example uses nesting to concatenate three character strings:
SELECT CONCAT(CONCAT(last_name, '''s job category is '), job_id) "Job"
FROM employees
WHERE employee_id = 152;
Job
------------------------------------------------------
Hall's job category is SA_REP
此函数等效于串联运算符(||)。
NVL
NVL允许您在查询结果中将null(作为空白返回)替换为字符串。如果expr1为null,则NVL返回expr2。如果expr1不是null,那么NVL将返回expr1。
参数expr1和expr2可以有任何数据类型。如果它们的数据类型不同,则Oracle Database会隐式地将一种转换为另一种。如果无法隐式转换,则数据库将返回错误。隐式转换的实现方式如下:
- 如果expr1是字符数据,那么Oracle Database会在比较之前将expr2转换为expr1的数据类型,并在expr1字符集中返回VARCHAR2。
- 如果expr1是数字,则Oracle数据库确定哪个参数具有最高的数字优先级,隐式将另一个参数转换为该数据类型,并返回该数据类型。
TO_CHAR ()
TO_CHAR(数字)使用可选的数字格式fmt将n转换为VARCHAR2数据类型的值。值n可以是NUMBER、BINARY_FLOAT或BINARY_DOUBLE类型。如果省略fmt,则n将转换为一个VARCHAR2值,其长度正好足以容纳其有效数字。V
NVL2
NVL2允许您根据指定的表达式是否为null来确定查询返回的值。如果expr1不为空,则NVL2返回expr2。如果expr2为空,那么NVL2将返回expr3。
INITCAP初始化
INITCAP
返回char
,每个单词的第一个字母大写,所有其他字母小写。单词由空格或非字母数字字符分隔。
char可以是任何数据类型char、VARCHAR2、NCHAR或NVARCHAR2。返回值与char的数据类型相同。数据库根据为基础字符集定义的二进制映射设置初始字符的大小写。对于语言敏感的大小写,请参阅NLS_INITCAP。
此函数不直接支持CLOB数据。然而,CLOB可以通过隐式数据转换作为参数传入。
SELECT INITCAP('the soap') "Capitals" FROM DUAL; Capitals --------- The Soap
SESSIONTIMEZONE
SESSIONTIMEZONE返回当前会话的时区。返回类型是时区偏移量(格式为“[+|-]TZH:TZM”的字符类型)或时区区域名称,具体取决于用户如何在最近的ALTER session语句中指定会话时区值。
注意:即使客户端操作系统使用命名时区,默认客户端会话时区也是偏移量。如果希望默认会话时区使用命名时区,请将客户端环境中的ORA_SDTZ变量设置为Oracle时区区域名称。有关此变量的详细信息,请参阅《Oracle数据库全球化支持指南》。
The following example returns the time zone of the current session:
SELECT SESSIONTIMEZONE FROM DUAL; SESSION ------- -08:00
REPLACE
REPLACE将每次出现的search_string替换为replacement_string时返回char。如果replacement_string被省略或为null,则会删除所有出现的search_string。如果search_string为空,则返回char。
search_string和replacement_string以及char都可以是任何数据类型char、VARCHAR2、NCHAR、NVARCHAR2、CLOB或NCLOB。返回的字符串与char的字符集相同。如果第一个参数不是LOB,函数将返回VARCHAR2;如果第一个变量是LOB,则函数将返回CLOB。
REPLACE提供与TRANSLATE函数提供的功能相关的功能。TRANSLATE提供单字符、一对一替换。REPLACE允许用一个字符串替换另一个字符串,并删除字符串。
The following example replaces occurrences of J
with BL
:
SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL; Changes -------------- BLACK and BLUE
NULLIF
NULLIF比较expr1和expr2。如果它们相等,则函数返回null。如果它们不相等,则函数返回expr1。不能为expr1指定文字NULL。
如果这两个参数都是数字数据类型,则Oracle数据库确定具有较高数字优先级的参数,隐式将另一个参数转换为该数据类型,并返回该数据类型。如果参数不是数字,则它们必须是相同的数据类型,否则Oracle将返回错误。
NULLIF函数在逻辑上等价于以下CASE表达式:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
Examples
下面的示例从示例模式hr中选择自被雇用以来已更改职务的员工,如job_history表中的job_id与employees表中的当前job_id不同所示:
SELECT e.last_name, NULLIF(j.job_id, e.job_id) "Old Job ID" FROM employees e, job_history j WHERE e.employee_id = j.employee_id ORDER BY last_name, "Old Job ID"; LAST_NAME Old Job ID ------------------------- ---------- De Haan IT_PROG Hartstein MK_REP Kaufling ST_CLERK Kochhar AC_ACCOUNT Kochhar AC_MGR Raphaely ST_CLERK Taylor SA_MAN Taylor Whalen AC_ACCOUNT Whalen
COALESCE
COALESCE返回表达式列表中的第一个非空表达式。必须至少指定两个表达式。如果所有出现的expr值都为null,则函数返回null。
Oracle数据库使用短路评估。数据库评估每个expr值并确定其是否为NULL,而不是在确定其中任何一个值是否为NULL之前评估所有expr值。
如果所有出现的expr都是数字数据类型或任何可以隐式转换为数字数据类型的非数字数据类型,则Oracle Database将确定具有最高数字优先级的参数,隐式将其余参数转换为该数据类型,并返回该数据类型。
此函数是NVL函数的泛化。
您还可以将COALESCE用作各种CASE表达式。例如
COALESCE(expr1, expr2)
is equivalent to:
CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END
Similarly,
COALESCE(expr1, expr2, ..., exprn)
where n
>= 3, is equivalent to:
CASE WHEN expr1 IS NOT NULL THEN expr1
ELSE COALESCE (expr2, ..., exprn) END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了