怎么在mySQL替换某个字段中间的不固定英文值?
发布网友
发布时间:2022-04-07 14:28
我来回答
共2个回答
热心网友
时间:2022-04-07 15:57
CREATE TABLE A (
B varchar(100),
C varchar(100)
);
INSERT INTO A (
B, C
) VALUES (
'/abcde(文章拼音)_12345(ID)/index',
'xyz(栏目拼音)/abcde(文章拼音)_12345(ID)/index'
);
-- 我假设你是要删除掉 _ 前面的数据.
UPDATE A
SET B = CONCAT('/', REVERSE(SUBSTRING_INDEX(REVERSE(B), '_', 1))) ;
mysql> SELECT B FROM A;
+------------------+
| B |
+------------------+
| /12345(ID)/index |
+------------------+
1 row in set (0.00 sec)
UPDATE A
SET C = REPLACE(C,
REVERSE(SUBSTRING( REVERSE(C), INSTR(REVERSE(C), '_'), LOCATE('/', REVERSE(C), INSTR(REVERSE(C), '_')) - INSTR(REVERSE(C), '_') )),
'');
mysql> SELECT C FROM A;
+-------------------------------+
| C |
+-------------------------------+
| xyz(栏目拼音)/12345(ID)/index |
+-------------------------------+
1 row in set (0.00 sec)
追问我只需要替换A、B、C后,直接复制到SQL里面执行就可以了吗?还需要改别的吗?我对这方面有些小白呃。。
追答替换A、B、C后,直接复制到SQL里面执行就可以了。
安全一点的处理, 就是处理前, 你先
CREATE TABLE 备份的表名称 AS SELECT * FROM A;
先备份一下数据。
热心网友
时间:2022-04-07 17:15
update A SET B=REPLACE(B,'abcde(文章拼音)_','')
update A SET C=REPLACE(C,'abcde(文章拼音)_','')