`
mikixiyou
  • 浏览: 1099165 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:353213
社区版块
存档分类
最新评论

to_char将number转成string的小技巧

阅读更多

很多数据转换处理操作时,会遇到将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类似。

 

(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1735953 )

 

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    科学记数。现在不支持。

 

它还能将时间格式的数据转换成字符串,只是格式更加复杂。

 

 

1
0
分享到:
评论

相关推荐

    几个常用的Oracle函数及实例运用

    TO_CHAR 函数用于将日期或数值转换为字符。 - **语法**: ```sql TO_CHAR(date_or_numeric_expr, format_mask) ``` - **示例**: ```sql TO_CHAR(r.f_month, '09') ``` 此处将`f_month`字段中的月份转换为两...

    Oracle110个常用函数……PDF清晰版

    - **转换函数**:如 `TO_CHAR`, `TO_DATE`, `TO_NUMBER` 等。 - **聚合函数**:如 `SUM`, `AVG`, `COUNT` 等。 - **条件判断函数**:如 `CASE`, `DECODE`, `NULLIF` 等。 - **系统函数**:如 `USER`, `SYS_GUID`, `...

    以前的算法小技巧1

    5. **保留小数位数**:使用`DecimalFormat`类或`String.format()`方法可以控制浮点数的显示精度,例如`String.format("%.2f", number)`将保留两位小数。 6. **字符串分隔**:`replace()`和`replaceAll()`都能用于...

    oracle笔记

    - `SELECT TO_CHAR(SYSDATE,'YYYYMMDDHH24:MI:SS') FROM DUAL`:将系统当前日期转换为自定义的字符串格式。 #### 2. **日期计算** - `SELECT TO_DATE('20120404','YYYYMMDD')+3*7 FROM DUAL`:在日期基础上加减...

    c#的数据转换.docx

    最后,C#还支持十六进制数的处理,可以使用`int.Parse("1A", System.Globalization.NumberStyles.HexNumber)`将十六进制字符串转换为整数,或者`string.Format("{0:X}", number)`将整数转换为十六进制字符串。...

    .net&VS;&SqlServer;编程小技巧经验总结

    ### .NET & VS & SQL Server 编程小技巧经验总结 #### 一、C#编程技巧 ##### EF中视图建模 在使用Entity Framework (EF) 进行数据库建模时,如果需要将数据库中的视图映射到实体类中,可能会遇到一个问题:当视图...

    c#.net项目开发中的小技巧

    ### C# .NET项目开发中的小技巧 #### 1. 使用DataGrid显示数据表 在C# WinForms开发中,`DataGrid`是显示表格数据的一个非常实用的控件。通过创建`DataGridTableStyle`实例,并设置其`MappingName`属性来关联到数据...

    QT基本类型及使用说明

    - **char to number**: - 示例:`char c = '9'; int num = c - '0';` - 结果:`num` 变为 `9`。 - **number to QString**: - 示例:`int num = 9; QString str = QString::number(num);` - 结果:`str` 变为 `...

    cJSON源码(Opencpu)

    cJSON库的核心是JSON对象的表示,它包括了JSON的几种基本类型:字符串(string)、数字(number)、布尔值(boolean)、数组(array)、对象(object)和null。这些类型在cJSON中都有对应的结构体,如`cJSON_String...

    菜鸟级SQL21天自学通.pdf

    - `TO_NUMBER(string)`:将字符串转换为数字。 - **其它函数**: - `GREATEST(value1, value2, ...)`: 返回最大值。 - `LEAST(value1, value2, ...)`: 返回最小值。 - `USER`: 返回当前用户的名称。 #### 第五...

    嵌入式软件开发必会函数集锦

    char *int_to_string(int num, char *str) { if (num == 0) { *str = '0'; str++; } if (num ) { *str = '-'; str++; num = -num; } while (num &gt; 0) { *str = (num % 10) + '0'; str++; num /= 10; }...

    C++常用技巧超赞的

    本文将围绕C++中的字符串处理技巧进行深入探讨,并结合具体的代码示例帮助读者更好地理解和应用这些技巧。 ##### 1. 字符大小写转换 在C++标准库中,并没有直接提供字符串整体大小写转换的功能。但是,通过利用STL...

    PLSQL基础

    - `TO_NUMBER(string)`:将字符串转换为数字。 #### 三、从多个表中提取数据 ##### 连接的概念 - **连接**是指将来自两个或多个表的行组合在一起的过程。 - **主要类型**: - 等值连接 - 非等值连接 - 外连接 ...

    asp.net(C#)使用中的23个技巧

    在SQL查询中,可以使用to_date函数去掉时间部分,例如对于Oracle:`to_date(日期字段, 'yyyy-mm-dd')`。 12. 合并数据库表的两个列: 在DataTable中添加一个新的列,使用Expression属性合并两个列,如Oracle:`...

    用shell脚本和c语言将大写字母转成小写的代码

    - 运行`./upper_to_lower.sh abcd`将输出:`[# no upper number:] abcd` #### C语言实现 **C语言代码示例:** ```c #include #include int haveuppernumber(char *p) { char *q = p; for (; *q != '\0'; q+...

    javascript中的小技巧

    ### JavaScript中的小技巧详解 #### 1. 使用`document.write("")` `document.write()`方法用于在文档中写入文本或HTML。此方法通常用于动态创建HTML文档内容。 **示例:** ```javascript document.write("&lt;h1&gt;...

    CString操作大全指南

    【标题】:全面掌握CString操作 【描述】:这篇指南详细介绍了如何在C++编程中高效使用CString类,包括字符串连接、格式化、不同类型...通过学习这些技巧,可以提高代码的可读性和维护性,并降低潜在的内存管理错误。

    CString 操作指南

    formatted.Format(_T("The number is %d"), num); ``` Format()方法会自动管理内存,避免了手动计算缓冲区大小的困扰。 3. 字符串与数值之间的转换: - 将int转换为CString: ``` int value = 42; CString ...

    sajson JSON parser for C++11

    std::cout &lt;&lt; "String: " &lt;&lt; value.as_string().to_string() ; } else if (value.is_number()) { std::cout &lt;&lt; "Number: " &lt;&lt; value.as_number() ; } } ``` **总结** `sajson`作为一款C++11的JSON解析器,凭借...

Global site tag (gtag.js) - Google Analytics