oracle sql字符串转数字问题

用to_number('123')可以转成数字123,但是当to_number('123ab')这种不能转的字符串我希望得到0的结果,应该怎么做。

1.将字符串类型转换为数字类型。此方法使用tonumber()直接转换。具体语法是tonumber(STR)。

2.将数字类型转换为字符串类型。此转换使用to_char(),这有点像上面的to_number()模式。999代表相同的内容。

3.将日期类型转换为字符串类型。实际上,此方法还使用到ˊchar(),它将日期格式转换为所需的格式类型。这种方法更加个性化。

4.下面的代码将日期类型转换为公共字符串类型,这是一种更常见、更完整的字符串格式。

5.将字符串类型转换为日期类型。此转换方法使用to_date()。用法也相对简单,转换后的日期格式也是自定义的。

6.完成效果图。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-06

这个你估计得自定义函数了,不能直接用to_number

创建函数

create or replace function isNumber(p in varchar2)
return number
is
test number;
begin
test := to_number(p);
return test;
exception
when VALUE_ERROR then return 0;
end;

 

测试1,纯数字

测试2 带非数字的字符

测试3,负数

 

测试4 小数

测试5  0

 

总之就是测试5和测试2的结果是一样,这个你看你打算怎么解决吧

本回答被提问者和网友采纳
第2个回答  2013-11-14
自己写一个函数 判断一下输入字符中 是否有数字外的字符 如果有 直接 返回0 ,否则返回数字
而后用到sql中

oracle sql字符串转数字问题
1.将字符串类型转换为数字类型。此方法使用tonumber()直接转换。具体语法是tonumber(STR)。2.将数字类型转换为字符串类型。此转换使用to_char(),这有点像上面的to_number()模式。999代表相同的内容。3.将日期类型转换为字符串类型。实际上,此方法还使用到ˊchar(),它将日期格式转换为所需...

Oracle APEX社区教程:PL\/SQL类型格式转换
在该函数中,我们通过TO_NUMBER函数将输入参数转换为数字类型,如果出现转换错误,函数将返回NULL值。其次,我们来看TO_DATE函数。其语法为TO_DATE(char[,’format’]),用于将字符类型的数据转换为日期类型。在使用该函数时,需要注意格式说明符与输入字符串格式的匹配问题,即格式和位数需相匹配。接下来...

oracle数据库里面的字符串转成数字类型,
建议你优化一下你的sql,你完全可以不用子查询将那4个表都扫描两遍(等到你数量巨大,效率会很低,你要在开发阶段避免这种情况的发生),你看一下oracle的LAG()和LEAD()统计函数,它可以在一次查询中取出同一字段的前N行的数据和后N行的值 你的s.status_name字段里是不是字符和数字都有啊,你贴一...

Oracle中如何用SQL把字符串转换成整型
(1)使用 CAST:CAST ( expression AS data_type )(2)使用 CONVERT:CONVERT (data_type[(length)], expression [, style])

SQL 怎样从字符串中提起纯数字?
可以创建一个自定义函数,专门用来截取字符串中所有的数字。自定义函数:CREATE function dbo.F_Get_No (No varchar(100))RETURNS INT AS BEGIN WHILE PATINDEX('%[^0-9]%',@No)>0 BEGIN SET @No=STUFF(@No,PATINDEX('%[^0-9]%',@No),1,'')END RETURN CONVERT(INT,@No)END 使用:...

Oracle数据报ORA-01722: 无效数字错误解决方案的示例
休眠模式解决方案:在使用休眠模式编写HSQL语句时,为避免数值问题,通常会将参数字符串化,如“字符串sql =“从ctEntity中选择*作为ct,其中ct.Nos ='” + no +“'”;当参数no为“4,5”时,可能不会出现错误,但当no为“4”或“5”(为一位数字)时,仍会报告错误。休眠后,语句被转换为“...

oracle sql 查询出sum(tot)一个数字字段,想转换成保留两位TO_CHAR(s...
select to_char(0.23,'fm0.99') from dual第一行你写的没看明白,第二行最后少个end,第三行decode不支持这种写法,可以换成 decode(sign(sum(tot)-1),1,TO_CHAR(sum(tot),'999,999,999.99'),TO_CHAR(sum(tot),'0.99'))

Oracle数据库的pl\/sql编程问题:
所以,你的||右边,不是字符型。而是数字型。ORACLE应该用TO_CHAR来把数字型转化成字符型。dbms_output.put_line('转账前总余额:'||to_char(account_a+account_b));这两个分开写,上面的那个写法,输出的结果是在两行,而下面,会使输入结果在一行中。而且如果直接使用put_line,括号内可以是...

数据库只包含数字的字符串怎么转成数字型的
一般oracle都是用tonumber函数转换的 试试这个语句 select 0+字段 from a;mysql中可以,oracle可以试试,不然估计没法通用

oracle数据库中将字符串'aaa,bbb,ccc'转为为列,用方法怎么写啊?请高...
select REGEXP_SUBSTR('aaa,bbb,ccc', '[^,]+', 1,l) from dual ,(SELECT LEVEL L FROM DUAL CONNECT BY LEVEL <= 100)WHERE L <= LENGTH('aaa,bbb,ccc') - LENGTH(REPLACE('aaa,bbb,ccc', ',')) + 1

相似回答