Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

как заменить char тип данных на float?

15K
04 августа 2006 года
zyablik
14 / / 29.06.2006
При создании таблицы был неправельно задан тип данных. Таблица уже заполнена цифорвыми данными, но из-за того что тип данных сhar неработают + - операции и.т. п. Простая смена типа данных не работает.
385
04 августа 2006 года
SomewherSomehow
477 / / 25.07.2004
А какая БД?
В MSSQL есть например такие функции как CONVERT, CAST. С помощью них можно преобразовывать типы...
15K
04 августа 2006 года
zyablik
14 / / 29.06.2006
SQL server 2000
CONVERT и CAST (токо что испытал) не работает.

хитрости есть какие-нибудь?
385
04 августа 2006 года
SomewherSomehow
477 / / 25.07.2004
как это "не работает"? у всех работает а тут вдруг не работает...
делаешь так, создаешь в таблице новый столбец с нужным тебе типаом например: col_float.
потом пишешь что-то вроде

update mytable
set col_float = CONVERT(float,col_char)

потом удаляешь col_char, потом переименуешь col_float в col_char, все у тебя таблица с колонкой нужного типа. Может можно как-то иначе, проще, но я бы сделал так =)
Кстати зачем все использует флоат, наверняка ведь там какие-то денежные суммы лежат, лучше использовать тип money. Т.к. например
 
Код:
declare @col_char char(10)
declare @col_float float

set @col_char = '111.1'

set @col_float = CONVERT(float,@col_char)
select @col_float

выдает результат: 111.09999999999999
а вот если у переменной тип money то выдаст нормально. Так что будь аккуратнее, возможно потом придется заниматься вульгарным округлением =)
385
04 августа 2006 года
SomewherSomehow
477 / / 25.07.2004
да забыл сказать перед преобразованием советую пройтись апдэйтом по всей табличке по этому полю и поменять разделители дробной части с , на . А то при преобразовании во флоат - будет ошибка, а в денежный тип, то и того хуже, приведет к неверным данным.
15K
04 августа 2006 года
zyablik
14 / / 29.06.2006
При выполнении вылетает окно "SQL general error... error converting data type varchar to float". А твой пример работает.
Думаю что это потому что после каждой цифры пробелы.

И не важно какой тип главное чтоб математ. операции работали.
Пока еще не понимаю чем отличается float от real или decimal от numeric.


Какие есть спопсобы замены разделителей , . ? Пока знаю только через SUBSTRING
385
04 августа 2006 года
SomewherSomehow
477 / / 25.07.2004
да уж..если после каждой цифры пробелы то работать не будет, данные для преобразования должны быть корректны.

Если не понимаешь чем отличается - почитай хелп, там написано что и какой тип значит. А я тебе просто из опыта посоветовал.

Да можно извратиться и через сабстринг а можно и просто вот так
 
Код:
set @col_char = REPLACE(@col_char,',','.')
15K
04 августа 2006 года
zyablik
14 / / 29.06.2006
спасибо за советы, пойду справку читать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог