declare @col_char char(10)
declare @col_float float
set @col_char = '111.1'
set @col_float = CONVERT(float,@col_char)
select @col_float
как заменить char тип данных на float?
При создании таблицы был неправельно задан тип данных. Таблица уже заполнена цифорвыми данными, но из-за того что тип данных сhar неработают + - операции и.т. п. Простая смена типа данных не работает.
В MSSQL есть например такие функции как CONVERT, CAST. С помощью них можно преобразовывать типы...
CONVERT и CAST (токо что испытал) не работает.
хитрости есть какие-нибудь?
делаешь так, создаешь в таблице новый столбец с нужным тебе типаом например: col_float.
потом пишешь что-то вроде
update mytable
set col_float = CONVERT(float,col_char)
потом удаляешь col_char, потом переименуешь col_float в col_char, все у тебя таблица с колонкой нужного типа. Может можно как-то иначе, проще, но я бы сделал так =)
Кстати зачем все использует флоат, наверняка ведь там какие-то денежные суммы лежат, лучше использовать тип money. Т.к. например
Код:
выдает результат: 111.09999999999999
а вот если у переменной тип money то выдаст нормально. Так что будь аккуратнее, возможно потом придется заниматься вульгарным округлением =)
да забыл сказать перед преобразованием советую пройтись апдэйтом по всей табличке по этому полю и поменять разделители дробной части с , на . А то при преобразовании во флоат - будет ошибка, а в денежный тип, то и того хуже, приведет к неверным данным.
Думаю что это потому что после каждой цифры пробелы.
И не важно какой тип главное чтоб математ. операции работали.
Пока еще не понимаю чем отличается float от real или decimal от numeric.
Какие есть спопсобы замены разделителей , . ? Пока знаю только через SUBSTRING
Если не понимаешь чем отличается - почитай хелп, там написано что и какой тип значит. А я тебе просто из опыта посоветовал.
Да можно извратиться и через сабстринг а можно и просто вот так
Код:
set @col_char = REPLACE(@col_char,',','.')
спасибо за советы, пойду справку читать.