需要有关简单SQL更新语句的帮助

时间:2010-03-31 06:32:25

标签: sql database oracle

有一个varchar类型的字段。它实际上存储一个浮点字符串。 像2.0,12.0,34.5,67.50 ...... 我需要的是一个更新语句,删除字段的结束零,如2.0,12.0,将它们更改为它们的整数表示,即2,12 ...,并保持3.45,67.50不变。我该怎么做?我正在使用oracle 10。

2 个答案:

答案 0 :(得分:6)

只要字段中的唯一数据是数字,那么这样的事情应该这样做......

UPDATE <table>
   SET not_string = TRIM( TO_CHAR( TO_NUMBER( not_string ), '999999999999' ) )
 WHERE TO_NUMBER( not_string ) = TRUNC( TO_NUMBER( not_string ) )

WHERE子句应该将更新限制为整数,SET部分将VARCHAR2转换为数字,然后返回到具有所需格式的VARCHAR(根据需要更改9的数量或依赖于NLS设置)在现场。

另外,因为大多数人都(或者至少应该)认为它。

如果字段是数字,则将其存储在正确的数据类型中,可以在输出时更改格式,并且可以避免这种字符串解析!

答案 1 :(得分:1)

这有用吗?

UPDATE Table Set Field = CAST(CAST(CAST(Field AS float) AS int) AS varchar(128));