SQL语法基础-其他函数V

devtools/2024/11/13 5:33:15/

SQL语法基础-其他函数V

  • 一、数据类型转换函数
  • 二、系统信息函数
  • 三、条件表达式函数
  • 四、XML相关函数
  • 五、JSON函数(从Oracle 12c开始支持)

一、数据类型转换函数

这类函数用于将数据从一种类型转换为另一种类型,非常有用于数据清洗和准备阶段。

TO_CHAR: 将数字或日期数据转换成字符串

sql">SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date FROM dual;
-- 2024-04-21 15:50:45
sql">SELECT TO_CHAR(123456789, 'FM$9,999,999,999') AS formatted_number FROM dual;
-- $123,456,789

TO_NUMBER: 将字符串转换成数字

sql">SELECT TO_NUMBER('12345', '99999') AS tonumber FROM dual;
-- 12345

TO_DATE: 将字符串转换成日期

sql">SELECT TO_DATE('2024-04-21', 'YYYY-MM-DD') AS todate FROM dual;
-- 2024-04-21 00:00:00

TO_TIMESTAMP: 将字符串转换为时间戳

sql">SELECT TO_TIMESTAMP('2024-04-21 16:00:00', 'YYYY-MM-DD HH24:MI:SS') AS timestamp FROM dual;
-- 2024-04-21 16:00:00.000000000

CAST: 将表达式转换为指定数据类型

sql">SELECT CAST('123' AS INTEGER) AS tonumber FROM dual;
-- 123

二、系统信息函数

这些函数提供关于数据库系统本身的信息,如用户信息、环境变量等。

USER: 返回当前数据库用户的用户名

sql">SELECT USER FROM dual;
-- SYSTEM

UID: 返回当前用户的ID

sql">SELECT UID FROM dual;
-- 5

SYS_CONTEXT(‘namespace’, ‘parameter’): 获取当前会话的特定环境参数

sql">SELECT SYS_CONTEXT('USERENV', 'SESSION_USER') FROM dual;
-- SYSTEM

DBTIMEZONE: 返回数据库时区

sql">SELECT DBTIMEZONE FROM dual;
-- +00:00

SESSIONTIMEZONE: 返回当前会话的时区

sql">SELECT SESSIONTIMEZONE FROM dual;
-- +08:00

三、条件表达式函数

这些函数根据不同的条件来选择不同的输出,非常适合处理多条件查询。

DECODE: 简化IF-THEN-ELSE逻辑,根据expression的值返回对应的result

sql">SELECT DECODE(1, 1, 'Match', 'No Match') FROM dual;
-- Match

CASE WHEN condition THEN result [ELSE result] END: 提供IF-THEN-ELSE逻辑的另一种实现方式,更易于读写

sql">SELECT CASE WHEN 1=1 THEN 'True' ELSE 'False' END FROM dual;
-- True

NVL(expr1, expr2): 如果expr1是NULL,则返回expr2

sql">SELECT NVL(NULL, 'Default Value') FROM dual;
-- Default Value

COALESCE(expr1, expr2, …, exprN): 返回参数列表中第一个非NULL的值

sql">SELECT COALESCE(NULL, NULL, 'First Non-Null Value') FROM dual;
-- First Non-Null Value

四、XML相关函数

这些函数用于处理XML格式的数据,包括生成和提取XML数据。

XMLAGG: 聚合多行数据到一个XML类型的结果

sql">SELECT XMLAGG(XMLELEMENT(E "item", column_name)).getClobVal() AS xml_output FROM table_name;

XMLELEMENT: 创建一个XML元素

sql">SELECT XMLELEMENT("Employee", 'John Doe') FROM dual;

XMLFOREST: 创建一系列的XML元素

sql">SELECT XMLFOREST(column_name AS "Column", another_column AS "Another") FROM table_name;

XMLPARSE: 解析字符数据为XML格式

sql">SELECT XMLPARSE(DOCUMENT '<root><child>content</child></root>') FROM dual;

五、JSON函数(从Oracle 12c开始支持)

用于处理JSON数据,这些函数可以解析JSON文本、生成JSON文本和查询JSON数据。

JSON_VALUE: 提取JSON文档中的标量值

sql">SELECT JSON_VALUE('{"name":"John", "age":30}', '$.name') FROM dual;

JSON_OBJECT: 生成JSON对象

sql">SELECT JSON_OBJECT('name' VALUE 'John', 'age' VALUE 30) FROM dual;

JSON_ARRAY: 生成JSON数组

sql">SELECT JSON_ARRAY(1, 2, 'three', NULL) FROM dual;

JSON_QUERY: 提取JSON文档中的复杂元素

sql">SELECT JSON_QUERY('{"employees": [{"name":"John", "age":30}]}', '$.employees[*]') FROM dual;

http://www.ppmy.cn/devtools/13796.html

相关文章

行为型设计模式(上)

模板方法模式 模板方法模式&#xff08;Template Method Pattern&#xff09;是一种在软件工程中常用的设计模式&#xff0c;属于行为型模式。它的核心思想是在一个抽象类中定义一个操作中的算法的骨架&#xff08;即一个模板&#xff09;&#xff0c;而将一些步骤的实现延迟到…

抽象工厂模式

抽象工厂模式 定义&#xff1a; 为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候&#xff0c;可以从抽象工厂中选出相对系的系列来创建一个具体的工厂类别 示例&#xff1a; 动物有吃饭和说话的行为&#xff0c;小猫吃猫粮并说喵星语&#xff0c;小…

Rust常用特型之Deref和DerefMut特型

在Rust标准库中&#xff0c;存在很多常用的工具类特型&#xff0c;它们能帮助我们写出更具有Rust风格的代码。 你可以通过在你的类型上实现std::ops::Deref和std::ops::DerefMut特型来自定义解引用操作例如*操作符和.操作符的行为。像Box<T>和Rc<T>实现了这两个特型…

川宁生物抢抓机遇,力争成为合成生物制造领域的头部企业

近年来&#xff0c;合成生物制造已成为新时期我国经济高质量发展的战略新兴产业之一&#xff0c;合成生物制造业的未来一片光明。川宁生物敏锐抓住此次机遇&#xff0c;以上海研究院为创新驱动的桥头堡&#xff0c;打造合成生物学CDMO产业平台&#xff0c;使公司成长为具有全球…

基于STM32单片机的智能家居环境监测与控制系统设计

基于STM32单片机的智能家居环境监测与控制系统设计 摘要&#xff1a;随着物联网技术的不断发展&#xff0c;智能家居环境监测与控制系统的应用越来越广泛。本文设计了一种基于STM32单片机的智能家居环境监测与控制系统&#xff0c;该系统能够实时监测环境中的温湿度和天然气浓…

《机器学习by周志华》学习笔记-线性模型-02

1、对数几率回归 1.1、背景 上一节我们考虑了线性模型的回归学习,但是想要做分类任务就需要用到上文中的广义线性模型。 当联系函数连续且充分光滑,考虑单调可微函数,令: 1.2、概念 找一个单调可谓函数,将分类任务的真实标记与线性回归模型的预测值联系起来,也叫做「…

redis底层数据结构之ziplist

目录 一、概述二、ziplist结构三、Entry结构四、为什么ZipList特别省内存五、ziplist的缺点 redis底层数据结构已完结&#x1f44f;&#x1f44f;&#x1f44f;&#xff1a; ☑️redis底层数据结构之SDS☑️redis底层数据结构之ziplist☑️redis底层数据结构之quicklist☑️red…

【Python-闭包】

Python-闭包 ■ 闭包特性■ 简单闭包■ 使用nonlocal关键字修改外部函数的值■ 使用闭包实现ATM小案例 ■ 闭包特性 ■ 简单闭包 def outer(logo):def inner(msg):print(f"<{logo}>{msg}<{logo}>")return innerfn1 outer("程序员") fn1(&quo…