网站编程薪资,网络推广怎么收费,高端网站建设口碑,做推广效果哪个网站好文章目录 前言to_char基本语法格式模型格式模型介绍无FM示例使用FM输出货币负数输出尖括号 将日期格式化将数字格式化为带有货币符号和千位分隔符的格式总结 to_date语法语法示例 戳这里#xff0c;第二弹 →
oracle常用的函数#xff08;二#xff09; 之 nvl、decode、l… 文章目录 前言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的作用是将数字格式化为指定的格式
FMFill Model表示“填充模式”用于去除格式化后的字符串中的前导空格或尾随零9表示数字字符如果该位置没有数字则显示为空格0表示数字字符如果该位置没有数字则显示为0.表示小数点00表示小数部分即使数字没有小数部分也会显示两位小数L货币符号D小数点G分组分隔符PR如果数字为负则在字符串前后加上尖括号RN罗马数字TH数字的序数如1st2nd3rd等 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两位日期 HH2424小时制的小时 MI分钟 SS秒 AM 或 PM上午或下午 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-231将hire_date转换为格式化的字符串 2筛选出晚于2023年6月23号入职的员工 筛选特定星期几的记录 # 将日期格式化为 YYYY-MM-DD 格式。
select employee_id、name from employees
where to_char(hire_date,DY,NLS_DATE_LANGUAGEENGLISH) MON1将hire_date转换为星期几的缩写 2NLS_DATE_LANGUAGEENGLISH确保星期几的缩写使用英文 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-311将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_CURRENCYALTER 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;