我有一个表 url_table ,其中包含以下数据:
url_table:
Keywords:
---------
panasonic-es-sl41
philips-hp-8105
-philips-hp-8310
mitsun-mit-555-
casio-mj-120d-
belkin-f8-n801-qe
我想删除" - "从记录的第一个和最后一个字母,而不影响表中的其他记录。什么是MySQL查询来取代' - '我需要吗?
答案 0 :(得分:4)
如果您需要从列值中消除前导和尾随破折号-
,那么TRIM非常适合这一点。这意味着如果列值在乞讨处或结尾处有两个或更多个破折号,则它们都将被删除。
UPDATE url_table
SET keywords = TRIM(BOTH '-' FROM keywords)
这是 SQLFiddle 演示
或
UPDATE url_table
SET keywords = TRIM(BOTH '-' FROM keywords)
WHERE keywords LIKE '-%'
OR keywords LIKE '%-'
这是 SQLFiddle 演示
在两种情况下更新后的结果
| KEYWORDS | --------------------- | panasonic-es-sl41 | | philips-hp-8105 | | philips-hp-8310 | | mitsun-mit-555 | | casio-mj-120d | | belkin-f8-n801-qe |
更新现在,如果您想要删除列值中的仅第一个和仅限最后破折号并保留任何后续值,那么您可以做这样的事
UPDATE url_table
SET keywords = CONCAT(REPLACE(LEFT(keywords, 1), '-', ''),
MID(keywords, 2, LENGTH(keywords) - 2),
REPLACE(RIGHT(keywords, 1), '-', ''))
WHERE keywords LIKE '-%'
OR keywords LIKE '%-'
此案例的 SQLFiddle 演示