用破折号替换空格并复制到新列

Posted

技术标签:

【中文标题】用破折号替换空格并复制到新列【英文标题】:Replace spaces with dash and copy into new column 【发布时间】:2013-08-27 23:28:06 【问题描述】:

我有一个名为“city”的表,列名为“city_name”,大约有 200 条记录。

我创建了另一个名为 slugs 的列,我想在同一行中复制“city_name”中的所有记录,并将空格替换为破折号 - 和小写。

我如何通过 phpmyadmin 实现这一点。

谢谢

【问题讨论】:

【参考方案1】:

您应该可以通过以下查询执行此操作:

UPDATE city SET slugs=LOWER(REPLACE(city_name, " ", "-"))

打破这一点,我们使用REPLACE 将现有city_name 列中的所有“”实例与“-”交换,然后将其结果传递给LOWER 函数(将数据为小写),然后将slugs 字段设置为该值。

根据您的数据“干净”程度,您可能还希望在应用 REPLACE 之前修剪数据(以删除 city_name 字段中的任何前导或尾随空格):

UPDATE city SET slugs=LOWER(REPLACE(TRIM(city_name), " ", "-"))

顺便说一下,如果您没有经常使用 (My)SQL,我建议您阅读 String Functions 手册页 - 您现在花在这方面的时间将超过未来的回报。

【讨论】:

谢谢,这很简单。刚刚发现在s_name和空格中也有一些,我现在如何替换slugs列中的thos? @Jay Er... 什么?您可以使用上述逻辑在任何列中用破折号替换空格。 (如果根据您的数据有意义,您还可以使用该列的版本更新该列,没有空格。)即:UPDATE city SET column_a=LOWER(REPLACE(TRIM(column_a), " ", "-")) 抱歉,我没有回答我的问题。我的意思是除了空格之外,城市名称中还有一些逗号。因为上面的查询用破折号替换了空格。如何使用此查询也用破折号替换逗号 UPDATE city SET slugs=LOWER(REPLACE(TRIM(city_name), " ", "-")) 谢谢 @Jay 将REPLACE(TRIM(city_name), " ", "-" 更改为REPLACE(TRIM(city_name), ",", "-"。顺便说一句,如果您不开始阅读手册,您将永远学不到任何东西。【参考方案2】:

这里是SQLFiddle

函数 LOWER(str)和REPLACE(str,from_str,to_str)的mysql文档

UPDATE city SET slugs = LOWER(REPLACE(city_name," ", "-"));

【讨论】:

以上是关于用破折号替换空格并复制到新列的主要内容,如果未能解决你的问题,请参考以下文章

小写字符串并用破折号替换空格[重复]

用破折号替换 URL 中的空格

用空格替换文本区域中的逗号、破折号和输入键

正则表达式用破折号、空格破折号、点空间、点和带有空字符串的撇号替换空格

php 过滤以停止WordPress用文件名中的破折号替换空格。

Asp.Net Routing - 用生成的 URL 中的破折号替换空格 %20 [重复]