Как добавить десятичные и нули после числа - PullRequest
0 голосов
/ 04 января 2011

У меня проблема с преобразованием значений.

Значения моего источника:

  • 1
  • 2
  • 3
  • 4
  • 1 - abcd
  • 2 - xyzabcdefgh
  • ABCDEFGH
  • lmnop

Мне нужен вывод как

  • 1,00
  • 2,00
  • 3,00
  • 4,00

У меня проблема в том, что некоторые поля содержат только буквы, а есть и те, которые содержат и буквы, и цифры.

Мне нужно только отформатировать только эти числа:

  • 1 как 1,00
  • 2 как 2,00

Поля, содержащие буквы, должны оставаться неизменными.

Любая помощь, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 04 января 2011

Попробуйте что-то вроде

select case 
    when MyVarcharColumn NOT LIKE '%[^0-9]%' then convert(decimal(18,2), MyVarcharColumn) 
    else MyVarcharColumn 
end as MyVarcharColumn
from x

Возможно, это не самое эффективное и эффективное решение, но оно должно работать

Я также согласен с Джо

0 голосов
/ 04 января 2011

попробуйте

select 
  case when col1 NOT LIKE '%[^0-9]%'
     then convert(varchar(50), convert(decimal(18,2), col1)) 
     else col1 end as col1 from mysource
0 голосов
/ 04 января 2011

Вы можете сделать то, что сказал Ли, или заключить в ловушку попытки

Declare @str varchar(10)


Set @str = '1'
Begin Try
    Select Convert(Decimal(10,2), @str) -- scale 10, precision 2
End Try
Begin Catch
    Select 'Not Numeric'
End Catch
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...