当前位置: 代码迷 >> Sql Server >> 请问数据类型转换的有关问题
  详细解决方案

请问数据类型转换的有关问题

热度:72   发布时间:2016-04-27 20:03:38.0
请教数据类型转换的问题
字段   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
*/
  相关解决方案