用户需求:
用户有这样一个表test
|
Ip |
Name |
|
127.3.2.0 |
Ken |
|
127.3.2.0 |
King |
|
127.3.2.0 |
Kent |
希望通过SQL语句实现更新表test中现有行的ip列值,依次按照127.0.0.1、127.0.0.2依次类推,即最后一位依次递增。
问题分析:
我们首先通过临时表做个测试,测试一下代码并查看输出结果
1
--生成测试数据
2
create table tab(id varchar(5) , tt varchar(5))
3
4
insert into tab
5
select 'w','a'
6
union select 'r','b'
7
union select 'x','c'
8
union select 'a','d'
9
union select 'f','e'
10
11
select * from tab
12
2
3
4
5
6
7
8
9
10
11
12
解决办法:
参考上例我们处理如下
Step1: ALTER TABLE test ADD index_c int IDENTITY(1,1)
Step2:
UPDATE test SET ip = '172.22.8.' + cast( index_c as varchar)
ALTER TABLE test DROP COLUMN index_c
select * from test
执行后结果如下:
|
Ip |
Name |
|
127.0.0.1 |
Ken |
|
127.0.0.2 |
King |
|
127.0.0.3 |
Kent |