新手想请教一个问题

idontsay33 2018-08-28 05:58:04
请问如何用sql语句把有效值如111、222替换其中的“/” 呢?
感激不尽
...全文
268 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
idontsay33 2018-08-30
  • 打赏
  • 举报
回复
引用 11 楼 yaiger 的回复:
须确保同YWH除'/'外只有一个相同值

update cs a
set a.bdcqzh = ( select distinct bdcqzh
from cs b
where a.ywh = b.ywh
and b.bdcqzh <> '\')
where a.bdcqzh = '\'


非常感谢!这个问题困扰我好久了,阁下写出来之后感觉茅塞顿开,原来可以这么简单。感谢感谢
yaiger 2018-08-30
  • 打赏
  • 举报
回复
须确保同YWH除'/'外只有一个相同值

update cs a
set a.bdcqzh = ( select distinct bdcqzh
from cs b
where a.ywh = b.ywh
and b.bdcqzh <> '\')
where a.bdcqzh = '\'
idontsay33 2018-08-30
  • 打赏
  • 举报
回复



引用 9 楼 yaiger 的回复:
我理解一下,是不是如果DBCQZH值为\的话就找到上一条不为\的复制过来?
也就是要达到下面的结果?

YWH QLRMC BDCQZH
001 张三 国有10001
001 李四 国有10001
001 tony 国有10001
002 cindy 国有10001
002 pudgy 国有10002
003 张伟 国有10003
003 大张伟 国有10003
003 断浪 国有10003
004 步惊云 国有10004
006 聂风 国有10005
007 雄霸 国有10006
007 帝释天 国有10006
007 无名 国有10006


是用同YWH且BDCDYH不为‘/’的复制过来
yaiger 2018-08-30
  • 打赏
  • 举报
回复
我理解一下,是不是如果DBCQZH值为\的话就找到上一条不为\的复制过来?
也就是要达到下面的结果?

YWH QLRMC BDCQZH
001 张三 国有10001
001 李四 国有10001
001 tony 国有10001
002 cindy 国有10001
002 pudgy 国有10002
003 张伟 国有10003
003 大张伟 国有10003
003 断浪 国有10003
004 步惊云 国有10004
006 聂风 国有10005
007 雄霸 国有10006
007 帝释天 国有10006
007 无名 国有10006
yaiger 2018-08-30
  • 打赏
  • 举报
回复
这个问题其实不难,只是阁下没有表达清楚意思,不然早就能得到答案了
_nick22222 2018-08-29
  • 打赏
  • 举报
回复
update testab b set b = (select substr(t.a,3,1)||substr(t.a,3,1)||substr(t.a,3,1) from testab t where b.a=t.a group by t.a );
idontsay33 2018-08-29
  • 打赏
  • 举报
回复


引用 1 楼 jdsnhan 的回复:
想要什么样的结果,画出来看看




把左边换成右边
jdsnhan 2018-08-29
  • 打赏
  • 举报
回复
想要什么样的结果,画出来看看
idontsay33 2018-08-29
  • 打赏
  • 举报
回复
效果如图:

现在大家应该能理解了
真心求教,感谢各位慷慨赐教
idontsay33 2018-08-29
  • 打赏
  • 举报
回复
drop table cs;
create table cs
(
ywh varchar(100),
qlrmc varchar(100),
bdcqzh varchar(100)
);

insert into cs values ('001','张三','国有10001');
insert into cs values ('001','李四','\');
insert into cs values ('001','tony','\');
insert into cs values ('002','cindy','\');
insert into cs values ('002','pudgy','国有10002');
insert into cs values ('003','张伟','国有10003');
insert into cs values ('003','大张伟','\');
insert into cs values ('003','断浪','\');
insert into cs values ('004','步惊云','国有10004');
insert into cs values ('006','聂风','国有10005');
insert into cs values ('007','雄霸','国有10006');
insert into cs values ('007','帝释天','\');
insert into cs values ('007','无名','\');


select * from cs;
idontsay33 2018-08-29
  • 打赏
  • 举报
回复
引用 4 楼 yaiger 的回复:
如果a是012,b应该是什么?

并不是有规律的,我只是举个例子,实际表中的均是随机的
i7777777_xi 2018-08-29
  • 打赏
  • 举报
回复
楼上提供的是DML语句,直接将表修改为你想要的,如果只是想在select中显示,不修改表的话可以用 分析函数得到。
SELECT A,MAX(A)OVER(PARTITION BY A) B FROM TABLE_NAME
yaiger 2018-08-29
  • 打赏
  • 举报
回复
如果a是012,b应该是什么?

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧