Во-первых, я должен упомянуть, что моя текущая версия sbbase db - это Adaptive Server Enterprise 12.5.4. Я пытаюсь преобразовать тип данных float в varchar
через функцию преобразования sybase для того, чтобы concat
несколько из этих типов переменных, форматировать и хранить в строковом типе.Sybase convert issue from float to varchar
К сожалению, это не так. Просто используя convert(varchar(20), float_var)
или cast()
функция не может правильно вернуть точное значение.
Например, ...
declare @float_var float
begin
select @float_var =345.1237 --from table actually
select convert(varchar(20),@float_var) --return 345.1236999999
end
Неверные результаты возвращаемая строка иногда имеют 99999
или 00001
суффикс.
Я пробовал много функций, включая указание точности, но есть еще несколько случаев, не работающих над ним. Внутренняя функция sybase точно не работает на нем.
Я полагаю, что это проблема с gerneral при использовании Sybase DB, однако мало ответов найдено в serach. Во время моего прошлого опыта Sybase store gammer всегда имеет своего рода допуск во время выполнения и внутреннее исправление при возникновении ошибки. Этот вопрос заставляет меня смутить, как Sybase работает внутри компании. Любой совет будет оценен, спасибо заранее.
Учитывая precsii on of float data type, я попытался использовать case # 1 cast (cast (@float_var как десятичный (38,15)) как varchar), но все же несколько номеров не могут пройти тест, например 96.332, возвращающийся 96.33199999999999494 –
, каков ваш точный желаемый результат?? – SQLGuru
Спасибо за ваш быстрый ответ. Основной целью этого является преобразование типа данных float в строковый тип данных без потери точности, или, другими словами, значение этого столбца типа float должно быть полностью эквивалентно его преобразованной строке при отображении в виде выбора. Мне нужна общая функция, чтобы покрыть это (от float до varchar) без потери точности или масштаба. @SQLGuru –