找回密码
 立即注册
搜索
查看: 521|回复: 10

SQL 语句求助

[复制链接]

708

主题

2547

回帖

3066

积分

论坛元老

积分
3066
发表于 2005-9-11 02:17:01 | 显示全部楼层 |阅读模式
HY库中有表AAA ,有字段BH(字符型)、KZ(字符型)、FILEPATH(字符型),字段FILEPATH现在为空列,
怎样能达到这个结果
加入 KZ = 'ABC'  则FILEPATH = 'z:\'bh'.jpg', 说简单些就是
BH              KZ                      FILEPATH
0001          ABC                   Z:\0001.JPG
0002          AFH                                    
0003          ABC                   Z:\0003.JPG

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
发表于 2005-9-11 20:00:58 | 显示全部楼层
说得不是很明白

第2个数据的FILEPATH为什么是空的?
回复

使用道具 举报

8

主题

204

回帖

298

积分

海星

积分
298
发表于 2005-9-12 04:51:36 | 显示全部楼层
要写procedure?
用cursor,和while循环,加上自定义的变量来实现。
并不是很复杂。不过不知道你用的是哪个数据库软件。写了个sql2000的procedure。
DECLARE c1 CURSOR FOR SELECT aaa.KZ FROM aaa

DECLARE @txt varchar(255)
OPEN c1

FETCH c1 INTO @txt
WHILE @@fetch_status = 0
BEGIN
        UPDATE aaa
        SET  FILEPATH = 'Z:\'+@txt+'.jpg'
        FROM aaa as tar join
                (SELECT *
                FROM aaa
                WHERE KZ=@txt) AS tmp ON tar.KZ=tmp.KZ and tar.BH=tmp.BH(这里可以用primary key)
       
        FETCH next FROM c1 INTO @txt
END
CLOSE c1
DEALLOCATE c1

没有测试,可能有小错误,自己修改一下
回复

使用道具 举报

708

主题

2547

回帖

3066

积分

论坛元老

积分
3066
 楼主| 发表于 2005-9-14 03:24:52 | 显示全部楼层
恩,说的不是不清楚,是错了两个字,是这样的
HY库中有表AAA ,有字段BH(字符型)、KZ(字符型)、FILEPATH(字符型),字段FILEPATH现在为空列,
怎样能达到这个结果
假如 KZ = 'ABC'  则FILEPATH = 'z:\'bh'.jpg',(如果 kz <> 'ABC' ,FILEPATH保留空) 说简单些就是
BH KZ FILEPATH
0001 ABC Z:\0001.JPG
0002 AFH
0003 ABC Z:\0003.JPG
谢谢先
回复

使用道具 举报

30

主题

1275

回帖

1732

积分

金牌会员

积分
1732
发表于 2005-9-14 09:16:51 | 显示全部楼层
写个insert和update的触发器就可以了。
回复

使用道具 举报

23

主题

472

回帖

656

积分

高级会员

积分
656
发表于 2005-9-15 22:23:20 | 显示全部楼层
UPDATE aaa
SET FILEPATH = CASE WHEN KZ='ABC' then 'Z:\'+convert(varchar(len(BH),BH),+'.jpg' else FILEPATH end
回复

使用道具 举报

37

主题

370

回帖

544

积分

高级会员

积分
544
发表于 2005-9-16 09:10:54 | 显示全部楼层
最初由 lsj 发布
[B]写个insert和update的触发器就可以了。 [/B]

正解;02
回复

使用道具 举报

48

主题

680

回帖

961

积分

金牌会员

积分
961
发表于 2005-9-16 09:17:54 | 显示全部楼层
为了保证表中数据的准确性,应用触发器前还需要做个update,不过aspeer的语句有点问题,convert结果是不对的,BH是字符型的,可以不用convert,并且也用不着case,update aaa set FILEPATH='z:\'+BH+'.jpg' where KZ='ABC' 就可以了;19
回复

使用道具 举报

105

主题

1729

回帖

2454

积分

论坛元老

积分
2454
发表于 2005-10-3 11:45:23 | 显示全部楼层
是应该如此,挺麻烦的
回复

使用道具 举报

36

主题

337

回帖

506

积分

高级会员

积分
506
发表于 2005-10-4 10:45:45 | 显示全部楼层
嗯,正确,写insert的触发可以避免脏数据的产生
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-17 23:54 , Processed in 0.110709 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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