[英]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.