我有很多记录,在oracle
表中上传excel时,其数据上传错误。部分结果如下
8.632233817E9, 8.63227224E9, 8.819243113E9
所以现在我想要的是删除E9
,它是每个值的最后一个,也是小数。
注意我不想删除9
,如果它出现在任何数字的中间。
其查询是
select STORE_SITENAME_LANDL_2, RRSOC_ID from TBL_RRSOC_STORE_INFO;
其中RRSOC_ID
是我的主键值
答案 0 :(得分:0)
如果您希望从此类数据中删除E9
,则只需使用
select
replace(STORE_SITENAME_LANDL_2, 'E9'),
replace(RRSOC_ID, 'E9'),
replace(STORE_CODE, 'E9')
from
TBL_RRSOC_STORE_INFO;
但你真的希望你说的话吗?也许
select
to_number(STORE_SITENAME_LANDL_2, '9.999999999999999EEEE'),
to_number(RRSOC_ID, '9.999999999999999EEEE'),
to_number(STORE_CODE, '9.999999999999999EEEE')
from
TBL_RRSOC_STORE_INFO;
你真的需要什么?
答案 1 :(得分:0)
由于8.819243113E9
只是您8819243113
的另一种撰写方式,如您对请求的评论中所述,只需将您的字符串转换为数字:
update mytable
set col = to_number(col, '9.9999999999999999999EEEE')
WHERE col LIKE '_.%E%';
这也会处理像8.8192E9
8819200000
(而不是88192
这样的值,您可以通过自己的方法获得这些值,只需删除9E和小数分离器)。
但如前所述,您不应该在文本列中存储数字。将其设为数字列,不会出现此类错误。