51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3263|回复: 6
打印 上一主题 下一主题

SQL数据库游标操作

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-5-21 15:39:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在测试的时候,需要添加一些数据,在此过程中遇到如下问题
问题点:在一个表中
sourcesnbr                                   shortnum  phonenum              customerid         createdate
SV12009050909034682.819        6010        075588889010        80000000        2009-05-21 15:12:47.513
SV12009050909034682.819        6011        075588889011        80000000        2009-05-21 15:12:47.513
SV12009050909034682.819        6012        075588889012        80000000        2009-05-21 15:12:47.513
SV12009050909034682.819        6013        075588889013        80000000        2009-05-21 15:12:47.513
SV12009050909034682.819        6014        075588889014        80000000        2009-05-21 15:12:47.513
SV12009050909034682.819        6015        075588889015        80000000        2009-05-21 15:12:47.513
SV12009050909034682.819        6016        075588889016        80000000        2009-05-21 15:12:47.513
现要在列shortnum值前加0755.比如6010需要变为07556010.我自己写了一个游标

declare @shortnum nvarchar(20); --定义变量
declare short_to_longnum cursor for --定义游标
select shortnum from tbl_phone_bind_relation;
open short_to_longnum;  --打开游标
fetch next from short_to_longnum into @shortnum;
while @@fetch_status=0 --遍历游标
begin
update tbl_phone_bind_relation set
[email=shortnum=]shortnum='0755'+@shortnum[/email];
fetch next from short_to_longnum into @shortnum;
end
CLOSE  short_to_longnum; --关闭游标
DEALLOCATE short_to_longnum;--释放游标


我执行这游标后,结果全变成了‘07550755075507556010’,与预期结果不一致呀,请大师帮忙指点。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-5-22 09:15:38 | 只看该作者
为什么要用游标呢,直接SQL就可以达到你要的效果了。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-5-25 19:03:16 | 只看该作者
请各位帮忙解决呀,急!用SQL语句又是怎样搞定?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2009-5-29 10:59:11 | 只看该作者
update tbl_phone_bind_relation set [email=shortnum=]shortnum='0755'+shortnum[/email];

想得太复杂了。可能对数据库中的一些概念还没有深刻的领会所致。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-6-7 13:16:58 | 只看该作者
不知道上面提供的答案是否可行?
我的办法很简单用mysql的cat函数就可以了,如果不是mycql,可以使scrcat函数
update tbl_phone_bind_relation set shortnum=cat('‘0755’‘,shortnum)
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-6-7 13:20:50 | 只看该作者
更正一下,是concat函数,刚才语句少了个con
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-6-7 21:07:59 | 只看该作者
update tbl_phone_bind_relation set shortnum='‘0755’‘||shortnum;
commit;

或者想上面说的用 concat函数
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-7 05:49 , Processed in 0.067933 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表