to_char() 多了个字符

来源:互联网 发布:知满天面试班怎么样 编辑:程序博客网 时间:2024/05/18 04:51

sp.param_value nvarchar2(200);

 

 

select sp.param_code, to_number(sp.param_value), sp.param_value,length(param_value)
  from sys_service_param sp
 where sp.param_type_code = 'bank'
   and sp.param_value = to_char(0.78,'0.00')

为什么to_char不行呢?
select sp.param_code, to_number(sp.param_value), sp.param_value,length(param_value)
  from sys_service_param sp
 where sp.param_type_code = 'bank'
发现 param_value 字符长度为4  0.78=4


to_char 格式的是5个字符
SQL> select length(to_char(0.78,'0.00')),to_char(0.78,'0.00') from dual;
LENGTH(TO_CHAR(0.78,'0.00')) TO_CHAR(0.78,'0.00')
---------------------------- --------------------
                           5  0.78

不带格式的是3个字符
SQL> select length(to_char(0.78)),to_char(0.78) from dual;
LENGTH(TO_CHAR(0.78)) TO_CHAR(0.78)
--------------------- -------------
                    3 .78

难怪查不到数据呢!!
SQL> select length('0.78') from dual;
LENGTH('0.78')
--------------
             4

而这种直接单引号就行

所以   and sp.param_value = trim(to_char(0.78,'0.00')) 就行了

0 0
原创粉丝点击