我在转换值方面遇到了问题。
我的来源值是:
我需要输出
我遇到的问题是某些字段只包含字母,还有包含字母和数字的字段。
我只需要格式化这些数字:
包含字母的字段需要保持不变。
请帮忙吗?
答案 0 :(得分:2)
尝试类似
的内容select case
when MyVarcharColumn NOT LIKE '%[^0-9]%' then convert(decimal(18,2), MyVarcharColumn)
else MyVarcharColumn
end as MyVarcharColumn
from x
可能不是最优雅/最有效的解决方案,但它应该可行
我也同意Joe
答案 1 :(得分:0)
你可以做李所说的,或者包含在试试中
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
答案 2 :(得分:0)
试试这个
select
case when col1 NOT LIKE '%[^0-9]%'
then convert(varchar(50), convert(decimal(18,2), col1))
else col1 end as col1 from mysource