sql server преобразует varchar в значение с плавающей запятой, вызывающее проблему

#sql-server

#sql-server

Вопрос:

Я получил эту ошибку при попытке преобразовать varchar в float с помощью cast или convert:

Ошибка преобразования типа данных varchar в float.

Может кто-нибудь, пожалуйста, помочь?

Код:

 SELECT  convert(float,isnull(output2,0) ) YTD 
FROM A
  

output2 является varchar столбцом в таблице A .

Комментарии:

1. Вы используете , вместо . значения varchar?

2. Вы можете попытаться выполнить SELECT output2 FROM A WHERE try_convert(float,isnull(output2,0) ) IS NULL , чтобы получить неправильные значения.

3. Какие данные в output2 столбце? Нечисловые данные не будут преобразовываться очень хорошо, например: select convert(float, 'lorem ipsum')

4. Предоставьте структуру таблицы и пример для output2 — в противном случае никто не сможет ответить на этот вопрос.

5. Как и в вашем предыдущем вопросе по той же проблеме — используйте try_convert . И ПОДУМАЙТЕ о своем коде. Мы знаем, что output2 — это varchar , поэтому вы должны заменять нулевые значения строковой константой ‘0’, а не целочисленной константой. Здесь вам повезло, и ваша целочисленная константа неявно преобразуется в varchar. В следующий раз вам может не повезти.

Ответ №1:

решено. Оказывается, что столбец output2 содержит некоторые нечисловые данные, поэтому он не удался