自打我用to_char来转换数字就发现了这个问题,即转换结果字符串最前面多了一个空格。我一直用trim再处理一下,没有关注过原因。今天上网查了一下,看到了一个说法及解决方案。
Oracle to_char():数字转字符串,结果添加空格:
select to_char(12,'00') from dual
字符串是 ' 12',前面多了一个空格,
select length(to_char(12,'00')) from dual
返回结果是:3
返回的字符串总是前面有个空格。原因:
那个空格位置是放符号的,正的数字就空了,负的就是一个‘-’号而没有空格。
这是网上流传的原因:
FM
Fill mode. Oracle uses blank characters to fill format elements to a constant width equal to the largest element for the relevant format model in the current session language. For example, when NLS_LANGUAGE is AMERICAN, the largest element for MONTH is SEPTEMBER, so all values of the MONTH format element are padded to 9 display characters. This modifier suppresses blank padding in the return value of the TO_CHAR function:
In a datetime format element of a TO_CHAR function, this modifier suppresses blanks in subsequent character elements (such as MONTH) and suppresses leading zeroes for subsequent number elements (such as MI) in a date format model. Without FM, the result of a character element is always right padded with blanks to a fixed length, and leading zeroes are always returned for a number element. With FM, which suppresses blank padding, the length of the return value may vary.
In a number format element of a TO_CHAR function, this modifier suppresses blanks added to the left of the number, so that the result is left-justified in the output buffer. Without FM, the result is always right-justified in the buffer, resulting in blank-padding to the left of the number.
Track back
解决办法:
select trim(to_char(12,'00')) from dual
或者
select to_char(12,'fm00') from dual
总结:
select to_char(12,'00000') from dual 结果为:
00012(1个空格)
select to_char(12,'99999') from dual 结果为:
12(4个空格)
select to_char(-12,'00000') from dual 结果为:
-00012(无个空格)
select to_char(-12,'99999') from dual 结果为:
-12(3个空格)
分享到:
相关推荐
在 Oracle 中,还有其他日期函数,如 to_char 函数,可以将 DATE 类型的日期转换为字符串。例如: select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; 在上面的例子中,sysdate 是当前日期和...
Oracle的`TO_CHAR`函数是一个非常重要的转换函数,它用于将数据库中的数值或日期类型数据转换为字符串形式,便于在报告、输出...理解并熟练运用`TO_CHAR`函数,能够极大地提升在Oracle数据库中处理数据的效率和灵活性。
Oracle的`to_char`函数是...总的来说,Oracle的`to_char`函数是数据格式化的重要工具,它提供了丰富的选项来满足我们在处理数字和日期时的各种显示需求。通过熟练掌握其用法,可以提高数据处理的灵活性和报表的可读性。
Oracle的`to_char`函数是一个强大的格式化工具,它允许用户将数据库中的日期、数值、时间等数据类型转换为格式化的字符串。这个函数在PL/SQL编程中非常常见,可以帮助开发人员按照特定的样式和格式展示数据,提高...
Oracle的`to_char`函数是数据库中非常重要的一个转换函数,它主要负责将数值或日期类型的数据转换为字符串格式,以便于数据展示、格式化输出或者进行特定的字符串操作。在Oracle数据库中,`to_char`函数的语法结构...
"解决mybatis使用char类型字段查询oracle数据库时结果返回null问题" 在使用mybatis框架对Oracle数据库进行查询操作时,如果使用char类型字段作为查询条件,可能会出现结果返回null的问题。这种情况下,需要对char...
在Oracle数据库中,提供了丰富的内置函数来处理各种数据类型的操作需求。这些函数能够极大地简化开发人员的工作,并提高SQL查询的效率。本文将详细介绍几个常用Oracle函数及其在实际项目中的应用案例。 #### 二、...
通过上述示例可以看出,Oracle中的单值函数非常实用,可以帮助我们高效地处理各种数据问题。掌握这些函数对于提高SQL查询能力和优化数据库性能具有重要意义。在未来的学习过程中,建议深入研究更多复杂的函数组合和...
本文主要探讨的是在处理小于1的小数时,使用`CHAR`类型可能导致小数点前的零被丢失的问题,以及如何通过`TO_CHAR`函数来解决这个问题。 首先,我们要了解问题的起源。当Oracle数据库中的字段用于存储小于1的小数,...
Oracle中的日期格式处理主要通过使用TO_CHAR函数和TO_DATE函数来实现。 TO_CHAR函数可以将日期对象转换为指定的日期字符串格式。例如,下面的SQL语句将当前日期转换为"yyyy-mm-dd"格式的字符串: ```sql SELECT TO...
在Oracle数据库中,处理正数转换为字符串时可能出现的前导空格问题可以通过两种方式进行解决:一是使用`FM`格式元素直接在`TO_CHAR()`函数中避免添加前导空格;二是使用`LTRIM()`函数去除已存在的前导空格。这两种...
- **二进制转十六进制**: Oracle中的`RAW_TO_HEX`函数与SQL Server中的`CONVERT`函数有类似功能。 总结来说,尽管Oracle和SQL Server在函数的具体实现和语法上有所不同,但它们都提供了广泛的功能来支持日常的...
Oracle SQL 函数是数据库查询和数据处理中的重要工具,提供了丰富的功能来处理各种数据类型。在Oracle 8i版本中,这些函数包括但不限于DECODE、LPAD、TO_DATE和TO_CHAR等,它们帮助用户进行条件判断、字符串操作、...
在Oracle数据库系统中,`TO_CHAR`函数被广泛用于将数值型数据转换为字符型数据,以便进行格式化输出或者满足特定的显示需求。本单元主要讲解`TO_CHAR`函数在处理数值型数据时的用法和格式化选项。 `TO_CHAR`函数的...
本文将详细介绍Oracle中与时间相关的应用及函数,包括转换函数(`TO_DATE` 和 `TO_CHAR`)、日期格式、日期运算等内容。 #### 一、转换函数 在Oracle中,`TO_DATE` 和 `TO_CHAR` 是最常用的时间转换函数。 ##### ...
本知识点集合将详细介绍Oracle数据库中提供的各种函数及其使用方法,从而帮助开发者在进行数据库操作时能够更加高效地利用这些工具。 一、字符串函数 1. 求字符串的长度 LENGTH 2. 使用 SUBSTR 函数从字符串中提取...
在Oracle数据库中,掌握常用的函数...这些函数在处理Oracle数据库中的数据时非常实用,无论是数据清洗、数据分析还是报告生成,都能大大提高工作效率。熟悉并灵活运用这些函数是每个数据库管理员和开发人员必备的技能。