Saw*_*yer 2 sql database oracle
有一个varchar类型的字段.它实际上存储一个浮点字符串.像2.0,12.0,34.5,67.50 ......我需要的是一个更新语句,删除2.0,12.0等字段的结束零,将它们更改为它们的整数表示,即2,12 ...,并留下3.45, 67.50不变.我该怎么做?我正在使用oracle 10.
只要字段中的唯一数据是数字,那么这样的事情应该做到......
UPDATE <table>
SET not_string = TRIM( TO_CHAR( TO_NUMBER( not_string ), '999999999999' ) )
WHERE TO_NUMBER( not_string ) = TRUNC( TO_NUMBER( not_string ) )
Run Code Online (Sandbox Code Playgroud)
WHERE子句应该将更新限制为整数,SET部分将VARCHAR2转换为数字,然后返回到具有所需格式的VARCHAR(根据需要更改9的数量或依赖于NLS设置),以便在字段中返回字符串.
此外,因为大多数人(或至少应该)认为它..
如果该字段是数字,则将其存储在正确的数据类型中,可以在输出上更改格式,并且可以避免这种字符串解析!