假设某个表A,里面有几个字段,其中一个value(具体值,varchar类型)字段,一个saveNum字段(保留几位小数),如何根据saveNum来更新value的值。
例如:现在数据是
ID value saveNum
1 2.01 3
2 0.5 2
更新后要变成
ID value saveNum
1 2.010 3
2 0.50 2
例如:现在数据是
ID value saveNum
1 2.01 3
2 0.5 2
更新后要变成
ID value saveNum
1 2.010 3
2 0.50 2
解决方案 »
- 怎么把字段里面的值拆开再查询?且同时行转列操作.
- 如何将一个变长字段的监时表的数据插入到另一个固定字段的表中?
- pb7+sql server 2000阻塞问题
- 如何将以下查询得出的值插入到一个新表中
- PDH向远程sql server 数据库插入数据 错误ERROR : Call to SQLAllocConnect failed with %1
- 请问下面要对各个物料进行求和怎么写SQL语句呀?QQ123835688白天在线等!
- 关于数据库大小和数据库读写速度
- 'bcp' 不是内部或外部命令,也不是可运行的程序?
- 请教如何判断一变量(如rs("data1"))的值是否为数字、日期或字符?代码如何写?
- 如何用sql server建立双机同步备分
- 一个简单的SQL查询有错误
- 如何读取SQL server数据库中varbinary(max)字段内容
declare @num int
declare @sql varchar(max)
select @num = max(saveNum) from tb
set @sql = 'select id,left(ltrim(cast(value as decimal(30,'+ltrim(@i)
+'))),charindex('','',ltrim(cast(value as decimal(30,'+ltrim(@i)
+'))))+saveNum) value,saveNum from tb'exec(@sql)
create table tb(id int,[value] varchar(20),saveNum int)
insert into tb
select 1,'12.233',2 union all
select 2,'123.1',5
godeclare @num int
declare @sql varchar(max)
select @num = max(saveNum) from tb
set @sql = 'select id,left(ltrim(cast(value as decimal(30,'+ltrim(@num)
+'))),charindex(''.'',ltrim(cast(value as decimal(30,'+ltrim(@num)
+'))))+saveNum) value,saveNum from tb'exec(@sql)drop table tb
/************id value saveNum
----------- ----------------------------------------- -----------
1 12.23 2
2 123.10000 5(2 行受影响)
*/
--前提是 value 中的数据要有 . 这个字符
ID int,
value varchar(30),
saveNum int
)insert @t select
1, '2.01', 3
union all select
2, '0.5', 2
update @t set value = ltrim(str(cast(value as numeric(38,28)),38,saveNum))select * from @t
go
--> -->
if not object_id(N'Tempdb..#') is null
drop table #
Go
Create table #([ID] int,[value] varchar(20),[saveNum] int)
Insert #
select 1,'2.01',3 union all
select 2,'0.5',2 union all
select 3,'1' ,2
Go
Select
[ID],
[value]=case when charindex('.',[value])=0 then [value]+'.'+replicate('0',[saveNum]) else left([value]+replicate('0',10),charindex('.',[value])+[saveNum]) end
from #
/*
ID value
1 2.010
2 0.50
3 1.00
/*