`

oracle中to_char函数转换后多出空格的问题

 
阅读更多
    今天编写往数据库中插入200万数据的存储过程,遇到to_char的问题,记录下来与大家分享。
    主键id为32位varchar类型,由数字组成,高位用0补足,例如'00000000000000000000000000000001'。
    存储过程如下:
create or replace procedure insertintouserstmp20151104(numb in number) as
user_id varchar2(32);
i number := 1;
begin
  for i in 1..numb loop
    user_id := to_char(UCMP_INSERTUSER.Nextval,'00000000000000000000000000000000');--UCMP_INSERTUSER为自增序列
    insert into users_tmp20151104(user_id,password,status,type_code,cust_type,register_source,create_tm,mem_no,nick_name,account_status)
values(user_id,'af8f9dffa5d420fbc249141645b962ee','Y','0','0','1',sysdate,user_id,user_id,'1');
    if(mod(i,1000)=0) then
        commit;
    end if;
  end loop;
  commit;
end insertintouserstmp20151104;

    调用存储过程时提示user_id长度为32位,实际为33位,测试发现是to_char指定了转换格式参数后,长度比预想的32位多了一位
   select length(to_char(11)) from dual;--2
   select length(to_char(11,'00')) from dual;--3
   网上查询资料发现,to_char转换指定格式时,字符串前面增加了一个空格,所以长度比指定格式长度增加了1,网上流传原因是:那个空格位置是放符号的,正的数字就空了,负的就是一个‘-’号而没有空格。
   select length(to_char(1,'00')) from dual;-- 3
   select length(to_char(-1,'00')) from dual;-- 3
  
   解决方法:用trim转换或者fm
   select length(trim(to_char(1,'00'))) from dual;-- 2
   select length(to_char(1,'fm00')) from dual;-- 2

再执行存储过程,运行成功,ok!



分享到:
评论

相关推荐

    Oracle的to_date函数.doc

    在 Oracle 中,还有其他日期函数,如 to_char 函数,可以将 DATE 类型的日期转换为字符串。例如: select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; 在上面的例子中,sysdate 是当前日期和...

    Oracle to_char的使用

    Oracle的`TO_CHAR`函数是一个非常重要的转换函数,它用于将数据库中的数值或日期类型数据转换为字符串形式,便于在报告、输出或者处理时按照指定的格式显示。在这个过程中,`TO_CHAR`函数的参数是关键,它们决定了...

    oracle to_char函数将number转成string

    Oracle的`to_char`函数是数据库中非常重要的一个转换函数,它允许我们将数值或日期类型的数据转换成格式化的字符串。这个函数在数据处理、报告生成和界面展示等场景中经常被用到,因为它能让我们根据需求自定义数字...

    oracle to_char function

    Oracle的`to_char`函数是一个强大的格式化工具,它允许用户将数据库中的日期、数值、时间等数据类型转换为格式化的字符串。这个函数在PL/SQL编程中非常常见,可以帮助开发人员按照特定的样式和格式展示数据,提高...

    Oracle to_char函数的使用方法

    Oracle的`to_char`函数是数据库中非常重要的一个转换函数,它主要负责将数值或日期类型的数据转换为字符串格式,以便于数据展示、格式化输出或者进行特定的字符串操作。在Oracle数据库中,`to_char`函数的语法结构...

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

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

    oracle_函数介绍

    通过上述示例可以看出,Oracle中的单值函数非常实用,可以帮助我们高效地处理各种数据问题。掌握这些函数对于提高SQL查询能力和优化数据库性能具有重要意义。在未来的学习过程中,建议深入研究更多复杂的函数组合和...

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    "解决mybatis使用char类型字段查询oracle数据库时结果返回null问题" 在使用mybatis框架对Oracle数据库进行查询操作时,如果使用char类型字段作为查询条件,可能会出现结果返回null的问题。这种情况下,需要对char...

    ORACLE 正数转换为字符串如何去掉前导空格

    在Oracle数据库中,处理正数转换为字符串时可能出现的前导空格问题可以通过两种方式进行解决:一是使用`FM`格式元素直接在`TO_CHAR()`函数中避免添加前导空格;二是使用`LTRIM()`函数去除已存在的前导空格。这两种...

    java-oracle数据库时间问题.docx

    Oracle中的日期格式处理主要通过使用TO_CHAR函数和TO_DATE函数来实现。 TO_CHAR函数可以将日期对象转换为指定的日期字符串格式。例如,下面的SQL语句将当前日期转换为"yyyy-mm-dd"格式的字符串: ```sql SELECT TO...

    单元十一:数据类型的显式转换TOCHAR用于数值型完美版资料.pptx

    在Oracle数据库系统中,`TO_CHAR`函数被广泛用于将数值型数据转换为字符型数据,以便进行格式化输出或者满足特定的显示需求。本单元主要讲解`TO_CHAR`函数在处理数值型数据时的用法和格式化选项。 `TO_CHAR`函数的...

    ORACLE与SQLSERVER函数异同比较

    - **二进制转十六进制**: Oracle中的`RAW_TO_HEX`函数与SQL Server中的`CONVERT`函数有类似功能。 总结来说,尽管Oracle和SQL Server在函数的具体实现和语法上有所不同,但它们都提供了广泛的功能来支持日常的...

    Oracle SQL 函数使用说明

    4. TO_CHAR函数:与TO_DATE相反,TO_CHAR将日期或数值转换为字符串,其语法为TO_CHAR(日期/数值, 格式模式)。日期格式模式包括元素如'YYYY'表示四位年份,'MM'表示月份,'DD'表示日期,还可以使用AM/PM标志,世纪值...

    基于oracle小数点前零丢失的问题分析

    为了解决这个问题,我们可以利用Oracle数据库提供的`TO_CHAR`函数进行数据转换和格式化。`TO_CHAR`函数能够将数值转换为字符串,并允许我们自定义输出格式。在描述中提到的解决方案是: ```sql SELECT TO_CHAR(0....

    oracle函数大全

    11. 转换日期为字符串或者字符串为日期,使用 TO_CHAR 和 TO_DATE 函数 二、数值函数 1. 四舍五入函数 ROUND,用于对数值进行四舍五入操作 2. 求最大或最小值 MAX 和 MIN 3. 求平均值 AVG 4. 求和 SUM 三、日期和...

    ORACLE里时间的应用和函数

    本文将详细介绍Oracle中与时间相关的应用及函数,包括转换函数(`TO_DATE` 和 `TO_CHAR`)、日期格式、日期运算等内容。 #### 一、转换函数 在Oracle中,`TO_DATE` 和 `TO_CHAR` 是最常用的时间转换函数。 ##### ...

    oracle数据库 110个常用函数

    15. TO_CHAR 函数:将数字转换为格式化的字符串,如TO_CHAR(9999.99) 可以控制小数点后的位数和千分位分隔符等。 这些函数在处理Oracle数据库中的数据时非常实用,无论是数据清洗、数据分析还是报告生成,都能大大...

Global site tag (gtag.js) - Google Analytics