I have table following this format :
Id BillNo: Voucher No:
1 W2015-16/0001 W2015-16/0001
2 W2015-16/0002 W2015-16/0002
3 W2015-16/0003 W2015-16/0003
4 W2015-16/0004 W2015-16/0004
5 W2015-16/0005 W2015-16/0005
6 W2015-16/0006 W2015-16/0006
7 W2015-16/0007 W2015-16/0007
8 W2015-16/0008 W2015-16/0008
9 W2015-16/0009 W2015-16/0009
10 W2015-16/0010 W2015-16/0010
但不是这种格式: 现在我要更新全部"凭证号码"和"比尔否"以下格式:
Id BillNo: Voucher No:
1 W0001/2015-16 W0001/2015-16
2 W0002/2015-16 W0002/2015-16
3 W0003/2015-16 W0003/2015-16
4 W0004/2015-16 W0004/2015-16
5 W0005/2015-16 W0005/2015-16
6 W0006/2015-16 W0006/2015-16
7 W0007/2015-16 W0007/2015-16
8 W0008/2015-16 W0008/2015-16
9 W0009/2015-16 W0009/2015-16
10 W0010/2015-16 W0010/2015-16
11 W0011/2015-16 W0011/2015-16
像这样我有1000多条记录我应该更新,但我不知道这可能在较短的时间内完成,请提出你的建议,我是SQL的新手
谢谢你的进步
答案 0 :(得分:1)
假设所有内容都是固定格式,那么您只需使用update
和字符串操作:
update table t
set billno = left(billno, 1) + right(billno, 4) + '/' + substring(billno, 2, 7),
VoucherNo = left(VoucherNo, 1) + right(VoucherNo, 4) + '/' + substring(VoucherNo, 2, 7);
答案 1 :(得分:0)
UPDATE YourTable
SET BillNo = SUBSTRING(BillNo,1,1) + SUBSTRING(BillNo,10,4) + '/' + SUBSTRING(BillNo,2,7)
, VoucherNo = SUBSTRING(VoucherNo,1,1) + SUBSTRING(VoucherNo,10,4) + '/' + SUBSTRING(VoucherNo,2,7)
测试:
DECLARE @a NVARCHAR(max) = 'W2015-16/0001'
SELECT SUBSTRING(@a,1,1) +
SUBSTRING(@a,10,4) + '/' + SUBSTRING(@a,2,7)
答案 2 :(得分:0)
没有直接的方法来实现这一目标。您可能需要在SQL中定义一些模式来替换和播放所有字符串函数。这是
declare @name varchar(50) ='W2015-16/0001';
select SUBSTRING(STUFF(@name,2,0,(SUBSTRING(@name,CHARINDEX('/',@name) + 1,len(@name)) + '/')),0,14)
--W0001/2015-16
这可以为您提供所需的结果。因此,您需要通过ID连接表来将其设置为更新语句。只有当您提供的模式正确时,这才有效。