left( '0 '+left((cast(left(b.xo,charindex( '* ',b.xo)-1)*10.0 as varchar(10))),charindex ( '. ',(cast(left(b.xo,charindex( '* ',b.xo)-1)*10.0 as varchar(10))))-1)+ '0 ',3) 这是我写的代码,总感觉不是很好太长了
发表于:2007-08-02 23:56:222楼 得分:0
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)
发表于:2007-08-03 21:41:543楼 得分:0
还有更好的吗?
发表于:2007-08-04 11:10:284楼 得分:0
要用存储过程实现,把字符串当作表达式 也可用游标 把 EXEC(列的内容)
发表于:2007-08-04 11:25:445楼 得分:0
如果小數的位數固定為一位的話
select right(1000 + cast(left(xo, charindex( '* ', xo) - 1) * 10.0 as int), 3) from b
发表于:2007-08-04 11:26:346楼 得分:0
--創建測試環境 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 */
发表于:2007-08-04 20:02:267楼 得分:0
多谢多谢,长见识了...
发表于:2007-08-04 20:04:068楼 得分:0
鱼的再转换为varchar就是我所想要的结果了
--創建測試環境 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 cast (right(1000 + cast(left(xo, charindex( '* ', xo) - 1) * 10.0 as int), 3) as varchar(3)) as xo from b go --刪除測試環境 drop table b