oracle 截取字符串(高分求答案)

现数据库表中有如下英文名:
JOHN/TOMAS MR
HONEY/LILI MS
LADY/GAGA MRACLE MS
KIKI/DUKY MSUYA MS

我的目标是去掉最后显示其性别的MR MS以及MR MS前的空格。但是不能破坏英文名。如下是我自己写的,估计是不行。求答案!!!

UPDATE T_CUSTOMER t
SET t.NAME_EN = substr(t.NAME_EN,0,instr(t.NAME_EN,' ',-1,1)-1)
WHERE instr(t.NAME_EN,' ',1,1)>0;
AND INSTR(T.NAME_EN,' MR',1,1)>0
OR instr(T.NAME_EN,' MS',1,1)>0
谢谢楼下各位回答
怪我没说清楚!关键数据库中有以下数据:

AMA/TERRY
SINA/LOY
ANA/CUI MSILU
TOM/LUYI MRADOU
最新回答
浅色夏沫

2024-11-27 04:17:22

楼主写的是对的啊

我在更新下
UPDATE T_CUSTOMER t
SET t.NAME_EN = substr(t.NAME_EN,0,instr(t.NAME_EN,' M',-1,1)-2)
WHERE substr(t.NAME_EN,-2,2)=' M';

确保倒数第二,第三位是' M'的才去更新
旧我

2024-11-27 02:52:52

用2个更新会比较简单的 注意下面sql的空格
--更新mr
update biao set name = replace( replace (a,' mr' ,'1111111'),'1111111','')
;
--更新ms
update biao set name = replace( replace (a,' ms' ,'111111'),'111111','')
;
落花缤纷下

2024-11-27 06:44:25

如果格式统一的话
UPDATE T_CUSTOMER t
SET t.NAME_EN =substr(t.NAME_EN,1,length(t.NAME_EN)-3)||substr(t.NAME_EN,length(t.NAME_EN)-1)
即可
书生剑主

2024-11-27 05:20:33

update UPDATE T_CUSTOMER t
SET t.NAME_EN =substr(t.NAME_EN,0,length(t.NAME_EN)-3))
巷尾青苔

2024-11-27 03:39:16

如果都是这样格式的字段更新 我怎么看都觉你写的sql没问题啊
或者
如果你的字段都是以:空格+MR 和空格+MS的格式 你把末尾3个去掉