нужна помощь с простым оператором обновления SQL - PullRequest
2 голосов
/ 31 марта 2010

Есть поле с типом varchar. Он на самом деле хранит строку с плавающей точкой. Как 2,0, 12,0, 34,5, 67,50 ... Что мне нужно, это оператор обновления, который удаляет конечные нули полей, таких как 2.0, 12.0, изменяет их на целочисленное представление, то есть 2, 12 ..., и оставляет 3.45, 67.50 без изменений. Как мне это сделать? Я использую оракул 10.

Ответы [ 2 ]

6 голосов
/ 31 марта 2010

Пока единственными данными в полях являются числа, тогда что-то вроде этого должно делать ...

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 голос
/ 31 марта 2010

Это работает?

UPDATE Table Set Field = CAST(CAST(CAST(Field AS float) AS int) AS varchar(128));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...