1

我有一个包含以下数据的表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 查询是什么?

4

1 回答 1

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演示

在这两种情况下更新后的结果

| 关键词 |
---------------------
| 松下-es-sl41 |
| 飞利浦-hp-8105 |
| 飞利浦-hp-8310 |
| mitsun-mit-555 |
| 卡西欧-mj-120d |
| 贝尔金-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演示

于 2013-07-03T06:10:13.473 回答