文章目录

  • 前言
  • to_char
    • 基本语法
    • 格式模型
      • 格式模型介绍
      • 无FM示例
      • 使用FM
      • 输出货币
      • 负数输出尖括号
    • 将日期格式化
    • 将数字格式化为带有货币符号和千位分隔符的格式
    • 总结
  • to_date
    • 语法
    • 语法示例

戳这里,第二弹 → oracle常用的函数(二) 之 nvl、decode、length…

前言

工作中开始接触了oracle,在使用的时候经常用到一些函数,再次做个总结,方便后续查看与使用

to_char

该函数主要用于将数据类型转换为字符类型:
1、将数值、日期等类型转换为字符串
2、根据指定的格式模型对结果进行格式化

基本语法

TO_CHAR(value, format_model, nls_params)
  • value:要转换的值,可以是日期或数字
  • format_model:格式模型,用于指定转换后的字符串格式
  • nls_params:(可选)用于指定语言环境参数,如日期语言、数字分组符号等

格式模型

格式模型介绍

在oracle的to_char函数中,常用的一个格式修饰符是FM。FM用于去除格式化后的字符串中的前导空格或尾随零。结合数字格式模型,FM99999999999999999999999990.00的作用是将数字格式化为指定的格式

  • FM:Fill Model,表示“填充模式”,用于去除格式化后的字符串中的前导空格或尾随零
  • 9:表示数字字符,如果该位置没有数字,则显示为空格
  • 0:表示数字字符,如果该位置没有数字,则显示为0
  • .:表示小数点
  • 00:表示小数部分,即使数字没有小数部分,也会显示两位小数
  • L:货币符号
  • D:小数点
  • G:分组分隔符
  • PR:如果数字为负,则在字符串前后加上尖括号
  • RN:罗马数字
  • TH:数字的序数(如1st,2nd,3rd等)

FM99999999999999999999999990.00 的作用是将数字格式化为最多 27 位整数和 2 位小数的格式,同时去除不必要的前导空格或尾随零。这种格式化方式特别适用于需要精确控制数字显示格式的场景,例如财务报表或数据导出。

无FM示例

  • 格式模式中的数字占位符(如9或0)的数量与实际数字的位数完全匹配

    select to_char(1234,'9999') as formatted_number from dual;
    

    输出结果:1234(没有空格)
    应为格式模型9999表示数字最多可以有4位,实际数字正好是4位,所以没有空格

  • 实际数字的位数大于格式模式中的占位符

    select to_char(12345,'9999') as formatted_number from dual;
    

    输出结果:12345(没有空格)

  • 使用0作为占位符,不是9,此时不会出现空格,会用0填充

    select to_char(123,'0000') as formatted_number from dual;
    

    输出结果:0123(前边用0填充)

  • 格式模型中的数字占位符数量大于实际数字的位数,那么会在数字前填充空格,以保持格式模型的宽度一致

    select to_char(123,'99999') as formatted_number from dual;
    

    输出结果: 123(前边有两个空格)
    格式模型99999表示数字最多可以有5位,实际数字123只有三位,所以前边会填充三个空格

使用FM

  • 较小的数字,前导空格被去除
    select to_char(123,'FM9999999.00') as formatted_number from dual;
    

    输出结果:123.00(没有空格)
    使用 FM 修饰符后,前导空格会被去除

  • 负数
    SELECT TO_CHAR(-123456, 'FM99999999990.00') AS formatted_number FROM dual;
    

    输出结果:-123456.00

输出货币

 SELECT TO_CHAR(123456.78, 'L999,999.99') AS formatted_number FROM dual;

输出结果:$123,456.78(具体货币符号取决于语言环境)

负数输出尖括号

 SELECT TO_CHAR(-123456.78, '999,999.99PR') AS formatted_number FROM dual;

输出结果:<123,456.78>

将日期格式化

当value是日期类型时,to_char函数可以将日期格式化为指定的字符串格式。

  • 常用日期格式

    YYYY:四位年份
    MM:两位月份
    DD:两位日期
    HH24:24小时制的小时
    MI:分钟
    SS:秒
    AMPM:上午或下午
    DY:星期几的缩写(如 Mon、Tue 等)
    DAY:星期几的全称(如 Monday、Tuesday 等)
    MON:月份的缩写(如 Jan、Feb 等)
    MONTH:月份的全称(如 January、February 等)

  • 筛选特定日期格式的记录

    # 将日期格式化为 YYYY-MM-DD 格式。
    select employee_id、name from employees 
    where to_char(hire_date,'YYYY-MM-DD')>'2023-06-23'
    

    1)将hire_date转换为格式化的字符串
    2)筛选出晚于2023年6月23号入职的员工

  • 筛选特定星期几的记录

    # 将日期格式化为 YYYY-MM-DD 格式。
    select employee_id、name from employees 
    where to_char(hire_date,'DY','NLS_DATE_LANGUAGE=ENGLISH') <>'MON'
    

    1)将hire_date转换为星期几的缩写
    2)NLS_DATE_LANGUAGE=ENGLISH确保星期几的缩写使用英文
    3)筛选出不是星期一的数据

  • 筛选特定日期范围的记录

    # 将日期格式化为 YYYY-MM-DD 格式。
    select employee_id、name from employees 
    where to_char(hire_date,'YYYY-MM-DD') not between '2023-01-01' and '2023-12-31'
    

    1)将hire_date转换为格式化的字符串
    2)筛选出不在2023年入职的员工

将数字格式化为带有货币符号和千位分隔符的格式

# 将数字格式化为带有货币符号和千位分隔符的格式。
SELECT TO_CHAR(salary, 'L999,999.99') AS formatted_salary
FROM employees;

如果salary的值是123456.78
输出结果: 123 , 456.78 货币符号 123,456.78 货币符号 123,456.78货币符号是根据数据库的默认货币符号来显示的

总结

  • 如果字段是时间格式,然后我们需要筛选

    select employee_id、name from employees 
    where to_char(hire_date,'YYYY-MM-DD')>'2023-06-23'
    
  • 如果需要显示特定的货币符号

    • 查询货币符号 并 设置指定的货币符号
      select * from NLS_DATEBASE_PARAMETERS WHERE PARAMETERS ='NLS_CURRENCY'
      
      ALTER SESSION SET NLS_CURRENCY='¥'
      

    • 查询时直接设置货币符号,这样无论数据库默认货币符号是什么,都会显示为¥
      select to_char(salary,'L999,999.99','NLS_CURRENCY = ¥') as formatted_salary
      from employees;
      
  • 格式模式使用,例如需要去除前后空格并不需要小数部分

    SELECT TO_CHAR(123456.78, 'FM99999999') AS formatted_number FROM dual;
    
  • 性能

    对于大数据量的表,使用to_char函数可能会对性能产生一定的影响

    • 1、to_char函数需要再查询执行过程中动态计算并转换数据类型,从而会增加cpu的消耗和内存的占用
    • 2、在where子句中使用to_char函数对导致数据库无法使用索引,因为格式化后的值与索引中的原始值不匹配

to_date

TO_DATE 函数用于将字符串转换为日期类型,并可以指定格式

语法

TO_DATE(string, format)

语法示例

将字符串 ‘2024-06-12’ 转换为日期类型

SELECT TO_DATE('2024-06-12', 'YYYY-MM-DD') AS hire_date
FROM dual;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912655.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912655.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912655.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库服务器宕机的处理方法与实战策略

在当今数字化时代,数据库作为企业数据存储与管理的核心,承载着业务运行的关键信息。一旦数据库服务器宕机,将导致业务中断、数据丢失等严重后果,甚至可能给企业带来巨大的经济损失和声誉损害。因此,掌握一套系统、科学的数据库服务器宕机处理方法尤为重要。本文将从应急响…

如何hack边缘的kubelet修改Cgroup数值

之前做了一个VPA项目的需求&#xff0c;就是需要不重启的方式修改容器的Cgroup的值已达到垂直扩缩容的目的&#xff0c;项目中核心的思路如下 上游下发要VPA的结果的值写入到容器的Annotation里面Kubelet 感知到这个 annoation 的变化我们本地运行一个 Agent&#xff0c;里面运…

熟悉 PyCharm

界面 我们常用的就这个几个地方&#xff1a; 常用配置 调整字体大小 Ctrl 滚轮调整字体大小 插件推荐 Indent Rainbow 该插件的作用在于能够对于不同层级缩进的空格标注不同的颜色&#xff1a; 快捷键 快捷键的 pdf 下载链接&#xff1a; Windows 版&#xff1a;https:…

pytorch--模型训练的一般流程

文章目录 前言0、数据集准备1、数据集2、dataset3、model4、训练模型 前言 在pytorch中模型训练一般分为以下几个步骤&#xff1a; 0、数据集准备 1、数据集读取&#xff08;dataset模块&#xff09; 2、数据集转换为tensor&#xff08;dataloader模块&#xff09; 3、定义模型…

智能合同管理实战:基于区块链的电子签约技术实现

在数字经济时代,传统纸质合同签署方式已难以满足企业高效、安全、合规的业务需求。智能合同管理(Smart Contract Management)结合区块链技术,正在重塑电子签约流程,实现合同全生命周期的自动化、可追溯和防篡改。本文将深入探讨基于区块链的电子签约技术实现,涵盖核心架构…

设计模式精讲 Day 22:模板方法模式(Template Method Pattern)

【设计模式精讲 Day 22】模板方法模式&#xff08;Template Method Pattern&#xff09; 文章标签 设计模式, 模板方法模式, Java开发, 面向对象设计, 软件架构, 设计模式实战, Java应用开发 文章简述 模板方法模式是一种行为型设计模式&#xff0c;它通过定义一个算法的骨架…

如何在pytorch中使用tqdm:优雅实现训练进度监控

文章目录 为什么需要进度条&#xff1f;tqdm 简介基础用法示例深度学习中的实战应用1. 数据加载进度监控2. 训练循环增强版3. 验证阶段集成 高级技巧与最佳实践1. 自定义进度条样式2. 嵌套进度条&#xff08;多任务&#xff09;3. 分布式训练支持4. 与日志系统集成 性能优化建议…

Linux中的xxd命令详解

xxd 是一个 十六进制转储&#xff08;hex dump&#xff09;工具&#xff0c;通常用于将二进制文件转换为十六进制格式&#xff0c;或者反向转换&#xff08;十六进制→二进制&#xff09;。它是 vim 的一部分&#xff0c;但在大多数 Linux 系统&#xff08;如 Ubuntu&#xff0…

磐维数据库panweidb3.1.0单节点多实例安装

0 说明 业务科室提单需要在某台主机上部署多个单机磐维数据库&#xff0c;用于业务测试。以下内容展示如何在单节点安装多个磐维数据库实例。 1 部署环境准备 1.1 IP 地址及端口 instipport实例1192.168.131.1717700实例2192.168.131.1727700 在131.17上分别安装两个实例&…

转录组分析流程(三):功能富集分析

我们的教程主要是以一个具体的例子作为线索,通过对公共数据库数据bulk-RNA-seq的挖掘,利用生物信息学分析来探索目标基因集作为某种疾病数据预后基因的潜能及其潜在分子机制,同时在单细胞水平分析(对scRNA-seq进行挖掘)预后基因的表达,了解细胞之间的通讯网络,以期为该疾病…

全面掌握 tkinter:Python GUI 编程的入门与实战指南

在自动化、工具开发、数据可视化等领域&#xff0c;图形用户界面&#xff08;GUI&#xff09;往往是提升用户体验的重要方式。作为 Python 官方内置的 GUI 库&#xff0c;tkinter 以其轻量、跨平台、易于学习的特性成为初学者和轻量级应用开发者首选。 本文将以深入浅出的方式…

TDH社区开发版安装教程

&#xff08;注&#xff1a;本文章来源于星环官网安装手册&#xff09; 后面放置了视频和安装手册连接 1、硬件及环境要求 Docker17及以上版本&#xff0c;支持Centos&#xff0c;Ubuntu等系统&#xff08;注&#xff1a;这里我使用CentOS-7版本&#xff0c;最佳版本推荐为7.…

Linux基本命令篇 —— grep命令

grep是Linux/Unix系统中一个非常强大的文本搜索工具&#xff0c;它的名字来源于"Global Regular Expression Print"&#xff08;全局正则表达式打印&#xff09;。grep命令用于在文件中搜索包含特定模式的行&#xff0c;并将匹配的行打印出来。 目录 一、基本语法 二…

苍穹外卖问题系列之 苍穹外卖订单详情前端界面和网课给的不一样

问题 如图&#xff0c;我的前端界面和网课里面给的不一样&#xff0c;没有“申请退款”和一些其他的该有的东西。 原因分析 “合计”这一栏显示undefined说明我们的总金额没有输入进去。可以看看订单提交那块的代码&#xff0c;是否可以正确输出。还有就是订单详细界面展示这…

CppCon 2018 学习:EMULATING THE NINTENDO 3DS

我们来逐个分析一下这个 组件交互模型 和 仿真 & 序列化 的关系&#xff0c;特别是主线程&#xff08;Main Thread&#xff09;与其他系统组件之间的交互。 1. Main Thread — simple (basically memcpy) --> GPU Main Thread&#xff08;主线程&#xff09;负责游戏的…

[Python 基础课程]数字

数字 数字数据类型用于存储数值&#xff0c;比如整数、小数等。数据类型是不允许改变的&#xff0c;这就意味着如果改变数字数据类型的值&#xff0c;将重新分配内存空间。 创建数字类型的变量&#xff1a; var1 1 var2 10创建完变量后&#xff0c;如果想废弃掉这个变量&a…

Linux CentOS环境下Java连接MySQL数据库指南

文章目录 前言一、环境准备1.1 系统更新1.2 Java环境安装1.3 MySQL数据库安装1.4 下载JDBC驱动 二、编写Java程序2.1 代码如下2.2 编译和运行2.3 验证创建结果 三、代码上传至Gitee3.1 安装配置Git3.2 克隆仓库到本地3.3 添加Java项目文件3.4 提交代码到本地仓库3.5 推送到Gite…

LLM面试12

讯飞算法工程师面试题 SVM核函数能否映射到无穷维 可以的&#xff0c;多项式核函数将低维数据映射到高维&#xff08;维度是有限的&#xff09;&#xff0c;而高斯核函数可以映射到无穷维。由 描述下xgb原理&#xff0c;损失函数 首先需要说一说GBDT,它是一种基于boosting增强…

类加载生命周期与内存区域详解

类加载生命周期与内存区域详解 Java 类加载的生命周期包括加载、验证、准备、解析、初始化五个阶段&#xff0c;每个阶段在内存中的存储区域和赋值机制各有不同。以下是详细解析&#xff1a; 一、类加载生命周期阶段 1. 加载&#xff08;Loading&#xff09; 内存区域&…

正交视图三维重建2 笔记 2d线到3d线2 先生成3d线然后判断3d线在不在

应该先连线再判断线在不在 if(fx1tx1&&tx1tx2){ const A[fx1, fy1, ty1];const Ahat[fx1, fy1, ty2];drawlines(A[0], A[1], A[2], Ahat[0], Ahat[1], Ahat[2], lineId, type,2);}if(fx2tx1&&tx1tx2){ const B[fx2, fy2, ty1];const Bhat[fx2, fy2, ty2];drawl…