oracle update ??????

[复制链接]
查看11 | 回复6 | 2008-1-2 17:35:53 | 显示全部楼层 |阅读模式
DEST_AREA_CODE
DEST_PORT



中国台湾

德国

德国

巴勒斯坦

神户(日本)

神户(日本)

吉大港(孟加拉)
我要把DEST_PORT里的国家更新到DEST_AREA_CODE这个字段里,有括号的更新括号里的国家到DEST_AREA_CODE字段里
例如 更新完结果

DEST_AREA_CODE
DEST_PORT


中国台湾
中国台湾
德国
德国
德国
德国
巴勒斯坦
巴勒斯坦
日本
神户(日本)
日本
神户(日本)
孟加拉
吉大港(孟加拉)
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层

update t set DEST_AREA_CODE = decode(sign(instr(DEST_PORT, '(')),

1,

substr(DEST_PORT,

instr(DEST_PORT, '(') + 1,

instr(DEST_PORT, ')') -instr(DEST_PORT, '(') - 1),

DEST_PORT);


[ 本帖最后由 bell6248 于 2009-5-6 11:18 编辑 ]
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
SQL> with t as
2(select '中国台湾' DEST_PORT FROM DUAL UNION ALL
3 select '神户(日本)' DEST_PORT FROM DUAL UNION ALL
4 select ' 吉大港(孟加拉)' DEST_PORT FROM DUAL )
5SELECT DECODE(SIGN(INSTR(DEST_PORT,'(')),1,
6
SUBSTR(DEST_PORT,INSTR(DEST_PORT,'(') + 1,
7
INSTR(DEST_PORT,')') - INSTR(DEST_PORT,'(') - 1),
8
DEST_PORT) STR
9FROM T
10;

STR
----------------------------------
中国台湾
日本
孟加拉
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
OK 已经搞定了 有用的发帖 我在贴出来
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
原帖由 gaochao102 于 2009-5-8 11:48 发表
OK 已经搞定了 有用的发帖 我在贴出来

你怎么搞定的怎么也不说一声啊
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
update table t
set DEST_AREA_CODE=substr(DEST_PORT,instr(DEST_PORT,'(')
+1,instr(DEST_PORT,')')-instr(DEST_PORT,'(')-1)
where instr(DEST_PORT,'(') >0
update table set DEST_AREA_CODE=DEST_PORT where instr(DEST_PORT,'(') <=0

把这两个语句分别执行就行实现
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
with tt as ( select 'avb(ddddff)'colfrom dual

union

select 'abcdefg' colfrom dual )
select nvl(substr(tt.col ,instr(tt.col,'(')+1, instr(tt.col,')')-instr(tt.col,'(')-1) , col)
from tt
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行