我有一个表,该表的一列中可能有几千个出现的破折号而不是空格。例如:
my-name-is-jack
我需要找到这些情况并将破折号换成空格。 但是,还有其他带有破折号的短语,在它们之前和/或之后有空格,不应更改。例如:
stackoverflow - a cool site for developers
我该怎么做?
*我假设我将使用Regex进行此操作,但是我从未见过Mysql中使用过Regex。 我将不胜感激。
谢谢!
答案 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"