用空格前后的所有连字符替换空格

时间:2018-11-27 12:16:34

标签: mysql sql regex string

我有一个表,该表的一列中可能有几千个出现的破折号而不是空格。例如:

my-name-is-jack

我需要找到这些情况并将破折号换成空格。 但是,还有其他带有破折号的短语,在它们之前和/或之后有空格,不应更改。例如:

stackoverflow - a cool site for developers

我该怎么做?

*我假设我将使用Regex进行此操作,但是我从未见过Mysql中使用过Regex。 我将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

通常的解决方案是用数据中不会出现的子字符串替换“不应该被触摸的子字符串”,进行实际替换,然后撤消临时替换:

SELECT test, REPLACE(REPLACE(REPLACE(test, ' - ', '^^^'), '-', ' '), '^^^', ' - ') AS result
FROM (
    SELECT 'my-name-is-jack - stackoverflow' AS test
) AS tests
-- returns "my name is jack - stackoverflow"