oracle to_char函数将number转成string

   2015-09-04 0
核心提示:很多数据转换处理操作时,会遇到将0.007007040000转换成0.70%的需求,我们使用Oracle 的SQL 函数 to_char可以实现这种转换,需要了解的朋友可以参考下
很多数据转换处理操作时,会遇到将0.007007040000转换成0.70%的需求,我们使用Oracle 的SQL 函数 to_char可以实现这种转换。
这个函数用来将DATE或NUMBER数据类型转换成可显示的字符串,格式是to_char(number_type, format_mask)。
格式'999.99',9表示对应的某一个指定位数的值,如果是值是0则忽略不显示,如果指定位数没有值,则以空格表示。
格式'0990.990',0表示对应的某一个指定位数的值,如果是值是0则显示为0,如果是没有值也显示为0。
格式'FM990.90',FM表示将显示出来的字符串定位数没有值而显示的空格清理掉,作用和ltrim类似。
复制代码 代码如下:

SQL> select to_char(12304.560,'999.99') from dual;
TO_CHAR(12304.560,'999.99')
---------------------------
#######
SQL> select to_char(104.560,'999.99') from dual;
TO_CHAR(104.560,'999.99')
-------------------------
104.56
SQL> select to_char(104.560,'99999.99') from dual;
TO_CHAR(104.560,'99999.99')
---------------------------
104.56
SQL> select to_char(104.560,'99999.990') from dual;
TO_CHAR(104.560,'99999.990')
----------------------------
104.560
SQL> select to_char(104.560,'0099.990') from dual;
TO_CHAR(104.560,'0099.990')
---------------------------
0104.560

复制代码 代码如下:

SQL>
SQL> select to_char(round(0.007007040000, 4) * 100, 'FM99999999990.90') || '%' as aa,
2 length(to_char(round(0.007007040000, 4) * 100, 'FM99999999990.90') || '%') as bb
3 from dual;
AA BB
---------------- ----------
0.70% 5
SQL>
SQL> select to_char(round(0.007007040000, 4) * 100, '99999999990.90') || '%' as aa,
2 length(to_char(round(0.007007040000, 4) * 100, '99999999990.90') || '%') as bb
3 from dual;
AA BB
---------------- ----------
0.70% 16

这是to_char将数字转换成字符串的常见操作功能,还有其他一些格式,见to_char(numeric)的格式模板。
复制代码 代码如下:

模板 描述
9 带有指定位数的值
0 前导零的值
. (句点) 小数点
, (逗号) 分组(千)分隔符
PR 尖括号内负值
S 带负号的负值(使用本地化)
L 货币符号(使用本地化)
D 小数点(使用本地化)
G 分组分隔符(使用本地化)
MI 在指明的位置的负号(如果数字 < 0)
PL 在指明的位置的正号(如果数字 > 0)
SG 在指明的位置的正/负号
RN 罗马数字(输入在 1 和 3999 之间)
TH or th 转换成序数
V 移动 n 位(小数)(参阅注解)
EEEE 科学记数。现在不支持。

它还能将时间格式的数据转换成字符串,只是格式更加复杂。
 
标签: to char number string
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Oracle PL/SQL开发利器-Toad应用总结(一)-PL/SQ
    转:http://ckitpro8086.blog.51cto.com/3653012/770589使用Toad进行Oracle PL/SQL Program的编写及调试需掌握如下视图应用:(1)Schema Broswer    模式浏览器(Schema Browser)可以快速访问数据字典,浏览数据库中的表、索引、存储过程。Toad 提供对数
    02-10
  • 卸载了PL/SQL Developer,说一下与Toad for Ora
    曾经一直用PL/SQL Developer来管理Oracle。发现真的使用起来非常不方便。打开非常卡,并且界面左上角总是多出那个框,怎么都无法设置默认隐藏掉。唯一让人认为非常值得的就是有一个美化工具,只是后来发现Toad 事实上也有一个format工具,就果断卸载PL/SQL了
    02-10
  • Tornado+MySQL模拟SQL注入
    Tornado+MySQL模拟SQL注入
    实验环境:python 3.6 + Tornado 4.5 + MySQL 5.7实验目的:简单模拟SQL注入,实现非法用户的成功登录先给一个SQL注入的图解,图片来自网络: 一、搭建环境1、服务端的tornado主程序app.py如下:#!/usr/bin/env python3# -*- coding: utf-8 -*-import tornad
    02-10
  • Flink sink to Oracle\MYSQL
    http://www.cnblogs.com/34fj/p/8820094.htmlhttps://blog.csdn.net/lmalds/article/details/52400805
    02-10
  • java.lang.ClassCastException: oracle.sql.TIM
    http://***.com/questions/13269564/java-lang-classcastexception-oracle-sql-timestamp-cannot-be-cast-to-java-sql-ti
    02-10
  • 关于 mybatis-generator自定义注释生成  使用DefaultCommentGenerator重写来完成
    


            
Mybatis Generator的mo
    关于 mybatis-generator自定义注释生成 使用De
    项目里新建表时model,mapper以及mapper.xml基本都是用Mybatis Generator(以下简称为MBG)自动生成的,但是MBG自动生成的model的注释实在有点非人类,至少中国人是完全接受不了的,在配置中禁用掉注释吧,倒是简单了,可是生成的model类光秃秃的,啥都没有,字段方法没
    02-10
  • 【MySQL】org.springframework.dao.TransientDataAccessResourceException: Error attempting to get column
    【MySQL】org.springframework.dao.TransientDa
     使用Mybatis plus的时候,查询select all,恰好报了异常    ; Zero date value prohibited; nested exception is java.sql.SQLException: Zero date value prohibited, mergedContextConfiguration = [WebMergedContextConfiguration@595b007d testClas
    02-10
  • Mysql远程连接报错:SQL Error (1130): Host '192.168.61.128' is not allowed to connect to this MySQ
    Mysql远程连接报错:SQL Error (1130): Host �
      通过SQLyog连接linux中的MySQL报错问题:SQL Error (1130): Host '192.168.0.18' is not allowed to connect to this MySQL server说明你所连接的用户账户没有远程连接的权限,只能在本机localhost登录需要更改 mysql 数据库里的 user表里的 host字段 把loc
    02-10
  • SQL语句往Oracle数据库中插入日期型数据(to_da
     Oracle 在操作数据库上相比于其他的 T-sql 有微小的差别,但是在插入时间类型的数据是必须要注意他的 to_date 方法,具体的情况如下:--SQL语句往Oracle数据库中插入日期型数据(to_date的用法)INSERTINTOFLOORVALUES( to_date ( '2007-12-20 18:31:34' ,
    02-10
  • mysql数据库出现ERROR 1 (HY000): Can't c
    1. mkdir /var/lib/mysql/tmp2. chown mysql:mysql /var/lib/mysql/tmp3. 修改/etc/my.cnf配置文件,在[mysqld]域加入:tmpdir = /var/lib/mysql/tmp4. 重启mysqld服务   service mysqld restart
    02-10
点击排行