как заменить определенное значение столбца. например, у меня есть три строки значений в таблице:
id_tweet: 1
status_user: RT @username1: success rta: P
id_tweet: 2
status_user: RT @username2: happy rta: D
id_tweet: 3
status_user: amen
из трех записей выше Я хочу заменить или удалить текст retweet в столбце status_user, чтобы:
after replace:
id_tweet: 1
status_user: success rta: P
id_tweet: 2
status_user: happy rtx: D
id_tweet: 3
status_user: amen
но у меня есть ограничения. Я думаю, что я могу использовать запрос функции замены на mysql следующим образом:
UPDATE tes_tbl_status
SET status_user = (SELECT REPLACE (status_user, '?', '') FROM
tes_tbl_status WHERE status_user LIKE 'RT%:%')
WHERE status_user LIKE 'RT%:%';
Информация: '?' = RT @...:
запрос выше, заменив определенное значение в столбце status_user пустым строковым значением, однако я пока не знаю, как получить текстовое значение
RT @...:
который будет заменен пустой строкой. у кого есть идеи или решения по моей проблеме?
Если вы хотите всегда удалять RT @...:
части, функции SUBSTRING_INDEX
, CONCAT
и REPLACE
mysql есть для вашей помощи. Использование SUBSTRING_INDEX
вы можете извлечь RT @...
подстроку, что вы можете Concat двоеточие (:
) и применить этот результат в REPLACE
функции в качестве from_str
параметра следует заменить пустой строкой.
Вот код, который для вас делает обновление:
UPDATE t
SET status_user = TRIM(REPLACE(status_user, CONCAT(SUBSTRING_INDEX(status_user, ':', 1),':'), ''))
WHERE status_user LIKE 'RT%';
Результат:
+----------+----------------+
| id_tweet | status_user |
+----------+----------------+
| 1 | success rta: P |
| 2 | happy rta: D |
| 3 | amen |
+----------+----------------+
Обратите внимание на TRIM
который я использовал для удаления верхнего и конечного пробелов (если они существуют).
DDL:
CREATE TABLE t (
id_tweet INT UNSIGNED NOT NULL,
status_user TEXT NOT NULL
);
INSERT INTO t (id_tweet, status_user) VALUES
(1, 'RT @username1: success rta: P'),
(2, 'RT @username2: happy rta: D'),
(3, 'amen');
Также есть хорошая библиотека mysql udf (lib_mysqludf_preg), которая может оснастить ваш mysql функциональными возможностями PCRE.