Mssql конвертировать varchar в float

Вопрос:У меня есть значение значения поля, равное 0.123. Это из представления и имеет тип данных varchar. Мне нужно преобразовать его в float или числовое значение, чтобы выполнить математические сравнения. новообращенный (поплавок, productlength) а также cast (productlength as float) оба не работают. error varchar cant be converted to float или что-то вроде этого. Из того, что

Вопрос:

У меня есть значение значения поля, равное 0.123. Это из представления и имеет тип данных varchar.

Мне нужно преобразовать его в float или числовое значение, чтобы выполнить математические сравнения.

новообращенный (поплавок, productlength)
а также
cast (productlength as float) оба не работают.

error varchar cant be converted to float или что-то вроде этого.

Из того, что я прочитал, varchar просто не может быть преобразован в числовую строку?

Какие-нибудь умные способы обойти это?

Лучший ответ:

Вы можете конвертировать varchars в float, и вы можете сделать это так, как вы выразились. Ваш varchar не должен быть числовым значением. В нем должно быть что-то еще. Вы можете использовать IsNumeric для его проверки. Смотрите это:

declare @thing varchar(100) select @thing = ‘122.332’ —This returns 1 since it is numeric. select isnumeric(@thing) —This converts just fine. select convert(float,@thing) select @thing = ‘122.332.’ —This returns 0 since it is not numeric. select isnumeric(@thing) —This convert throws. select convert(float,@thing) Ответ №1

Используйте

Try_convert(float,[Value])

См
https://raresql.com/2013/04/26/sql-server-how-to-convert-varchar-to-float/

Ответ №2DECLARE @INPUT VARCHAR(5) = ‘0.12’,@INPUT_1 VARCHAR(5)=’0.12x’; select CONVERT(float, @INPUT) YOUR_QUERY , case when isnumeric(@INPUT_1)=1 THEN CONVERT(float, @INPUT_1) ELSE 0 END AS YOUR_QUERY_ANSWERED

выше вернет значения

однако ниже запрос не работает

DECLARE @INPUT VARCHAR(5) = ‘0.12’,@INPUT_1 VARCHAR(5)=’0.12x’; select CONVERT(float, @INPUT) YOUR_QUERY , case when isnumeric(@INPUT_1)=1 THEN CONVERT(float, @INPUT_1) ELSE **@INPUT_1** END AS YOUR_QUERY_ANSWERED

как @INPUT_1 на самом деле имеет varchar.

Итак, ваш выходной столбец должен содержать varchar.

Оцените статью
Добавить комментарий