Oracle数据库中,如何对某一Varchar类型的列进行数学运算

数据库设计时把某一列数据类型设置为varchar,现在表中的这一列数据有的录入了字符,有的录入了数字,现在相对数字进行数学运算,但是直接不加限制的运算的话Oracle会直接报错。
请问,用什么操作可以对这一列中的数字进行数学运算而不报错呢,当然也不能影响其他非数值数据的内容
最新回答
彩虹糖没有糖

2024-10-17 12:33:00

我的方案:
1. 增加列:isdigit
2. 写一个存储过程或者plsql块,循环每行,尝试转换为数字(to_number),如果转换成功,则isdigit=1,如果触发异常,则为0
3. 写一个触发器,对于新增数据,修改数据,则尝试转换为数字,如果转换成功,则isdigit=1,如果触发异常,则为0
4. 对数据进行计算时,增加条件 isdigit=1即可。
我胸小随我爸

2024-10-17 10:43:45

首先判断是否数字串,用
正则式
如: regexp_like('1234', '^[[:digit:]]+$'); 选出数字串

然后字符转为数字 to_number() 进行数学运算

或者用 translate
trim(TRANSLATE(str, '1234567890', '')), 为空的话则是数字串,再用to_number()
接住路过的风

2024-10-17 08:09:05

只取纯数字的记录
select * from table1 where regexp_like(字段,'^[[:digit:]]+$');
中指朝天一声操

2024-10-17 08:44:34