如何从表记录中查找并替换特定的第一个字符串和最后一个字符串?

时间:2013-07-03 05:59:24

标签: mysql sql

我有一个表 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查询来取代' - '我需要吗?

1 个答案:

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