plsql数据库中如何批量截取两个字段的值拼接到第三个字段

#问题遇到的现象和发生背景
初体的就是需要截取的信息,最后是拼接好的字段

他权00309 513321001006GB00016F00130002 32151332100309
他权00309 513321001006GB00777F00170001 32151332100309
他权00309 513321001006GB00016F00120002 32151332100309
他权00309 513321001006GB00777F00180001 32151332100309
他权00321 513321001005GB00171F00020005 32151332100321

我的解答思路和尝试过的方法
UPDATE XS_DYAQ SET bdcdyysdm = (select substr(BDCQZH,3,4 ) value from XS_DYAQ) + (select substr(ysdm,1,1 ) value from XS_DYAQ) where ysdm='1'
运行后报错是单行修改语句返回多条查询结果
求大家帮忙看看,帮给个实行办法


UPDATE XS_DYAQ SET bdcdyysdm = concat( substr(BDCQZH,3,4 ) , substr(ysdm,1,1 ) ) where ysdm='1'

这样可行否?

子查询要带上XS_DYAQ表的条件,确保子查询只能查询一条记录出来。

你更新的原始字段来自于自己表的的本行,就没表要再去select一次了。
另外,在oracle数据库中,字符串拼接是使用两个管道符 || ,当然也可以使用concat函数,比如下面这个查询

select  bdcdyysdm ,substr(BDCQZH,3,4 )||substr(ysdm,1,1 ) from XS_DYAQ  where ysdm='1'

然后你的目的是把这个查询的第二列更新到第1列上去,所以转换成update语句就是下面这样写的

UPDATE XS_DYAQ SET bdcdyysdm =  substr(BDCQZH,3,4 )||substr(ysdm,1,1 )  where ysdm='1'
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632