假设我这里有一张表 table1cdefine1 cdefine2 cdefine3
2000-1 应收类 00234
2000-2 应收类 00234
2000-3 应收类 00234
2000-4 应收类 00234
2000-5 应收类 00234
2000-6 应收类 00234
2000-7 应收类 00234
2000-8 应收类 00234
2000-9 应收类 00234
2000-10 应收类 00234我想向cdefine1字段中的‘2000-’后面全部加上一个0,最终效果类似于:cdefine1 cdefine2 cdefine3
2000-01 应收类 00234
2000-02 应收类 00234
2000-03 应收类 00234
2000-04 应收类 00234
2000-05 应收类 00234
2000-06 应收类 00234
2000-07 应收类 00234
2000-08 应收类 00234
2000-09 应收类 00234
2000-010 应收类 00234请问该如何实现?希望各位才人们帮忙
2000-1 应收类 00234
2000-2 应收类 00234
2000-3 应收类 00234
2000-4 应收类 00234
2000-5 应收类 00234
2000-6 应收类 00234
2000-7 应收类 00234
2000-8 应收类 00234
2000-9 应收类 00234
2000-10 应收类 00234我想向cdefine1字段中的‘2000-’后面全部加上一个0,最终效果类似于:cdefine1 cdefine2 cdefine3
2000-01 应收类 00234
2000-02 应收类 00234
2000-03 应收类 00234
2000-04 应收类 00234
2000-05 应收类 00234
2000-06 应收类 00234
2000-07 应收类 00234
2000-08 应收类 00234
2000-09 应收类 00234
2000-010 应收类 00234请问该如何实现?希望各位才人们帮忙
解决方案 »
- 如何将多个表中的数据写入到一个游标中!
- 我想问问SQL2008设计图标查看表的时候,为什么后面没有说明选项,怎么添加
- 问一个比较有挑战性的查询语句
- sql问题?问了许多人,都不知道?谁可以帮忙一下吗
- 在线求SQL语句
- 兄弟們快幫我看看這個奇怪的數據庫連接問題.OLEDB加了密碼就連不上?
- 如何知道一个表中有多少的字段?
- 不能在firehose方式下启动事务是什么意思?
- (老问题没有解决啊!)如何在mysql中查询多条不重复记录值的解决办法!!~~(急!!!)
- 请教高手...
- win7 64系统安装SQL SERVER 2005 时安装不了,请麻烦各位帮我看看,谢谢!
- SSIS包中控制流 Foreach容器里有个执行SQL任务,出错后怎么跳过继续执行
如果是,那就:
update table1 set cdefine1=stuff(cdefine1,6,0,'0') where len(cdefine1)=6
-- Author :fredrickhu(小F,向高手学习)
-- Date :2011-11-28 13:59:56
-- Version:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86)
-- Apr 22 2011 11:57:00
-- Copyright (c) Microsoft Corporation
-- Enterprise Evaluation Edition on Windows NT 6.1 <X64> (Build 7600: ) (WOW64)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([cdefine1] varchar(10),[cdefine2] varchar(6),[cdefine3] varchar(5))
insert [tb]
select '2000-1','应收类','00234' union all
select '2000-2','应收类','00234' union all
select '2000-3','应收类','00234' union all
select '2000-4','应收类','00234' union all
select '2000-5','应收类','00234' union all
select '2000-6','应收类','00234' union all
select '2000-7','应收类','00234' union all
select '2000-8','应收类','00234' union all
select '2000-9','应收类','00234' union all
select '2000-10','应收类','00234'
--------------开始查询--------------------------
select
LEFT([cdefine1],CHARINDEX('-',[cdefine1]))+RIGHT(100+RIGHT([cdefine1],len([cdefine1])-CHARINDEX('-',[cdefine1])),2),* from tb
----------------结果----------------------------
/* cdefine1 cdefine2 cdefine3
-------------- ---------- -------- --------
2000-01 2000-1 应收类 00234
2000-02 2000-2 应收类 00234
2000-03 2000-3 应收类 00234
2000-04 2000-4 应收类 00234
2000-05 2000-5 应收类 00234
2000-06 2000-6 应收类 00234
2000-07 2000-7 应收类 00234
2000-08 2000-8 应收类 00234
2000-09 2000-9 应收类 00234
2000-10 2000-10 应收类 00234(10 行受影响)*/
go
--> -->
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([cdefine1] nvarchar(7),[cdefine2] nvarchar(3),[cdefine3] nvarchar(5))
Insert #T
select N'2000-1',N'应收类',N'00234' union all
select N'2000-2',N'应收类',N'00234' union all
select N'2000-3',N'应收类',N'00234' union all
select N'2000-4',N'应收类',N'00234' union all
select N'2000-5',N'应收类',N'00234' union all
select N'2000-6',N'应收类',N'00234' union all
select N'2000-7',N'应收类',N'00234' union all
select N'2000-8',N'应收类',N'00234' union all
select N'2000-9',N'应收类',N'00234' union all
select N'2000-10',N'应收类',N'00234'
Go
Select [cdefine1]=CASE WHEN len([cdefine1])=6 THEN stuff([cdefine1],6,0,'0') ELSE [cdefine1] end,[cdefine2],[cdefine3]
from #T
/*
cdefine1 cdefine2 cdefine3
2000-01 应收类 00234
2000-02 应收类 00234
2000-03 应收类 00234
2000-04 应收类 00234
2000-05 应收类 00234
2000-06 应收类 00234
2000-07 应收类 00234
2000-08 应收类 00234
2000-09 应收类 00234
2000-10 应收类 00234*/
[cdefine1]= stuff([cdefine1],6,0,'0')
WHERE len([cdefine1])=6
2000-010 应收类 00234
或use Tempdb
go
--> -->
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([cdefine1] nvarchar(7),[cdefine2] nvarchar(3),[cdefine3] nvarchar(5))
Insert #T
select N'2000-1',N'应收类',N'00234' union all
select N'2000-2',N'应收类',N'00234' union all
select N'2000-3',N'应收类',N'00234' union all
select N'2000-4',N'应收类',N'00234' union all
select N'2000-5',N'应收类',N'00234' union all
select N'2000-6',N'应收类',N'00234' union all
select N'2000-7',N'应收类',N'00234' union all
select N'2000-8',N'应收类',N'00234' union all
select N'2000-9',N'应收类',N'00234' union all
select N'2000-10',N'应收类',N'00234'
Go
Select [cdefine1]=CASE WHEN RIGHT([cdefine1],2) LIKE '[-][1-9]' THEN stuff([cdefine1],CHARINDEX('-',[cdefine1])+1,0,'0') ELSE [cdefine1] end,[cdefine2],[cdefine3]
from #T
--更新UPDATE #T SET [cdefine1]=stuff([cdefine1],CHARINDEX('-',[cdefine1])+1,0,'0') WHERE RIGHT([cdefine1],2) LIKE '[-][1-9]'