我有一个表格ABC
和列A
,其中很少有值.0
,我想删除所有这些值中的.0
。此列中的一些值也是字符串值,因此无法对值使用trunc
。所以,请通过oracle 10g
或11g
告诉我如何执行此操作。
答案 0 :(得分:1)
一些老式功能(如SUBSTR和TRIM,如果有必要)可能会有所帮助。
SQL> with test (col) as
2 (select '2.0' from dual union
3 select '3.20' from dual union
4 select '150.02' from dual union
5 select 'ABAC.0' from dual union
6 select 'DEF' from dual union
7 select '12345' from dual union
8 select '12.0 ' from dual
9 )
10 select col,
11 case when substr(trim(col), -2) = '.0' then substr(trim(col), 1, length(trim(col)) - 2)
12 else col
13 end col_new
14 from test;
COL COL_NE
------ ------
12.0 12
12345 12345
150.02 150.02
2.0 2
3.20 3.20
ABAC.0 ABAC
DEF DEF
7 rows selected.
SQL>
答案 1 :(得分:1)
您可以将TRIM
与TRAILING
选项一起使用两次。
如果您愿意,也可以使用where a like '%.0'
。
UPDATE yourtable t
SET a = TRIM (TRAILING '.' FROM TRIM (TRAILING '0' FROM a))
WHERE SUBSTR (a, -2) = '.0';
它类似于RTRIM ( RTRIM(a, '0' ),'.')
答案 2 :(得分:0)
使用以下sql更正您的数据:
UPDATE ABC S
SET S.A = SUBSTR (S.A, 1, LENGTH (S.A) - 2)
WHERE INSTR (SUBSTR (S.A, -2, 2), '.0', -1) = 1;