簡體   English   中英

如何替換MYSQL中列的某個值?

[英]how to replace a certain value of a column in MYSQL?

如何替換列的某個值。 例如我在一個表中有三行值:

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

我想將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_INDEXCONCATREPLACE 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

在此處查看sqlfiddle演示

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模式匹配功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM