繁体   English   中英

MySQL替换字符串的一部分(长文本)

[英]MySQL Replace Part of String (Longtext)

在从其他各个领域获得CONCAT之后,我正在尝试清理数据-特别是删除多个分隔符...但是它影响0条记录(数千个记录中的)。

UPDATE CONTACTS
SET NOTES = REPLACE(NOTES, "%- - - -%", "-")
WHERE NOTES = 53388 LIMIT 1

“哪里”仅用于测试。

之前的例子

ID | NOTES
1 | - - - - Hi there
2 | Sun is hot today - - - -
3 | Nice - - - - to be on stackoverflow
4 | This record is just - fine.

所需结果

ID | NOTES
1 |  Hi there
2 | Sun is hot today 
3 | Nice  to be on stackoverflow
4 | This record is just - fine.

我已经检查并仔细检查了该语句,但无法弄清楚我在做什么错。

它不会影响多行或单个行。

字段长文本有什么区别吗?

有任何想法吗?

您可以尝试以下方法:

UPDATE CONTACTS SET NOTES = REPLACE(TRIM(NOTES),'- - - -','');

结果

之前:

SELECT * FROM CONTACTS;
+------+-------------------------------------+
| ID   | NOTES                               |
+------+-------------------------------------+
|    1 | - - - - Hi there                    |
|    2 | Sun is hot today - - - -            |
|    3 | Nice - - - - to be on stackoverflow |
|    4 | This record is just - fine.         |
+------+-------------------------------------+

后:

SELECT * FROM CONTACTS;
+------+------------------------------+
| ID   | NOTES                        |
+------+------------------------------+
|    1 |  Hi there                    |
|    2 | Sun is hot today             |
|    3 | Nice  to be on stackoverflow |
|    4 | This record is just - fine.  |
+------+------------------------------+

你想取代这个%- - - -%- 您的样本数据中没有%号。 您可能会误认为它与LIKE表达式中的任何零个或多个字符序列匹配的%符号。

只需使用不带百分号的符号,并在需要时在之前/之后添加其他空格:

REPLACE(NOTES, "- - - -", "-")

如果您需要更复杂的逻辑并具有MySQL 8.0+版本,则可以使用REGEXP_REPLACE函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM