高分求SQL语句

liuchunjp 2006-01-16 04:05:59
表A 有个子段名为 Model_Name , 现要把这个字段更新。条件是,此字段第5位的字符为 A 的话 把A 设为 1 ,如果为B 的话 设为 2 。
例子:ModelA 更新后为 Model1
ModelB 更新后为 Model2
...全文
187 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
boydgmx 2006-01-18
  • 打赏
  • 举报
回复
update A
set Model_Name = Substr(Model_Name, 1, 4)
||decode(Substr(Model_Name, 5, 1),'A','1','B','2')
||Substr(Model_Name, 6);
wangzk0206 2006-01-18
  • 打赏
  • 举报
回复

update a a1 set model_name=(select rn from (
select rowid rid,substr(model_name,1,4)||decode(substr(model_name,5,1),'a','1','b','2')||substr
el_name,6) rn
from a ) a2
where a1.rowid=a2.rid )
/

新3行。

select * from a
/

ID MODEL_NAME
------ ----------
1 mode1
2 mode2
3 mode1ble
liuchunjp 2006-01-16
  • 打赏
  • 举报
回复
马上给分,谢
  • 打赏
  • 举报
回复
update A
set Model_Name = Substr(Model_Name, 1, 4)||decode(Substr(Model_Name, 5, 1),'A','1','B','2')||Substr(Model_Name, 6, length(Model_Name))
ljgeneral317 2006-01-16
  • 打赏
  • 举报
回复
declare
cursor cur_for_update is select a.serialno/*A表主键*/,a.Model_Name from A a
v_model_name varchar2(100);
v_serialno number(10);
begin
open cur_for_update;

loop
fetch cur_for_update into v_serialno,v_model_name ;exit when cur_for_update%notfound;
v_model_name:=replace(v_model_name,'ModelA ','Model1');
v_model_name:=replace(v_model_name,'ModelB ','Model2');
---如果没有特殊之可以
---v_model_name:=translate(v_model_name,'ABCDEFG','1234567');
update A set Model_Name=v_model_name where serialno=v_serialno
end loop;
close cur_for_update;
end;
swimming8243 2006-01-16
  • 打赏
  • 举报
回复
update table set
Model_Name = Substr(Model_Name, 1, 4)||decode(Substr(Model_Name, 5, 1),'A','1','B','2')
||Substr(Model_Name, 6, length(Model_Name))
liuchunjp 2006-01-16
  • 打赏
  • 举报
回复
要详细的,马上可以用的。
cenlmmx 2006-01-16
  • 打赏
  • 举报
回复
INSTR、SUBSTR 和REPLACE

17,082

社区成员

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

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