MySQL替换所有空格为-

18

如何从一行中删除所有空白字符?我在这里看到很多相同的问题,但所有答案都是使用替换选项。替换只能用于去除一个空格而不是所有空格。

例如:将a b c变成a-b-c

谢谢。


3
替换应该能够去除所有空格。 - Pekka
嗯,你是对的。但我知道我已经尝试过了,但它没有起作用。谢谢。 - oriceon
@oriceon 好的,我们需要看到你的代码。另外要考虑到你尝试去除的可能不是空格。 - Matt Gibson
如果你的目标是生成友好的URL(也称为...哦,我现在不记得它们的昵称了),你应该采用比仅仅用破折号替换空格更可靠的方法。 - Alessandro
1
@Alessandro,“slug”是一段文本的URL友好版本。 - Matt Gibson
4个回答

31

可以用以下MySQL函数实现:

SELECT REPLACE( table.field, ' ', '-' ) FROM table;

这应该将所有的空格替换为 -


3
在这个例子中,你需要使用FROM table而不是FROM field - Matt Gibson
1
请注意,这不会改变存储的数据库值,它只会将空格转换为连字符以便于此特定查询的结果集。 - diamondsea
要在数据库中替换它们,请使用下面@faiz的答案: - diamondsea

6
update image set path =  REPLACE( image.path, ' ', '-' ) where path like '% %'

如果您想在mysql中更新路径,请使用对所有具有空格的行进行更新的%20更新。


4

试试这个

replace('a b c',' ','-')

标准 SQL 使用单引号作为字符串分隔符。 - Álvaro González

4
UPDATE table SET table.field = REPLACE( table.field, ' ', '-' );

这将更新所有字段,用连字符替换所有空格。这实际上会修改表中的数据。Fokko上面的答案仅更改提取的数据,因此不会更改实际数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接