请教数据类型转换的问题
字段 XO(VARCHAR(25))
数据如下
2*3
2.5*2
10.5*6
0.8*3
我想把*号前面的数据转换成如下格式,类型还用VARCHAR
不用临时表直接在SELECT中
有没有什么更有效的方法,我转的过程感觉太麻烦了
020
025
105
008
------解决方案-------------------- declare @str varchar(20)
set @str= '10.5*6 '
select right( '000 '+cast(cast(left(@str,charindex( '* ',@str)-1) as float)*10 as varchar),3)
------解决方案--------------------要用存储过程实现,把字符串当作表达式
也可用游标
把
exec(列的内容)
------解决方案--------------------如果小數的位數固定為一位的話
Select Right(1000 + Cast(Left(XO, CharIndex( '* ', XO) - 1) * 10.0 As Int), 3) From b
------解决方案----------------------創建測試環境
Create Table b (XO VARCHAR(25))
Insert b Select '2*3 '
Union All Select '2.5*2 '
Union All Select '10.5*6 '
Union All Select '0.8*3 '
GO
--測試
Select Right(1000 + Cast(Left(XO, CharIndex( '* ', XO) - 1) * 10.0 As Int), 3) As XO From b
GO
--刪除測試環境
Drop Table b
--結果
/*
XO
020
025
105
008
*/