首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql中的字段名称中添加空格之间的破折号

问在mysql中的字段名称中添加空格之间的破折号
EN

Stack Overflow用户
提问于 2016-08-10 12:24:06
回答 3查看 1K关注 0票数 2

我有数据库在mysql和有维护3列,即ID,名称,段塞。

Slug列与name列相同,但我在此处放入name列的组合。假设名称是Micky,那么在slug中,我希望它应该显示micky Mehta。在slug中,我希望所有内容都是小写字母&如果是空格,则应该用破折号代替。所有这一切,因为我想为我的网站搜索引擎友好的网址。现在我可以在添加新产品时使用program执行此操作,但如果我可以直接使用mySQL执行此操作,是否也可以?我的意思是,在mySQL中有没有执行这种任务的函数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-10 12:32:20

您可以更新数据以适合您的方案:

代码语言:javascript
复制
UPDATE mytable SET slug = REPLACE(LOWER(name), ' ', '-');

如果希望在每次添加新行或更新现有行时自动执行此操作,可以使用触发器:

代码语言:javascript
复制
CREATE TRIGGER SetSlugIns BEFORE INSERT ON mytable
  FOR EACH ROW
  SET NEW.slug = REPLACE(LOWER(NEW.name), ' ', '-');

CREATE TRIGGER SetSlugUpd BEFORE UPDATE ON mytable
  FOR EACH ROW
  SET NEW.slug = REPLACE(LOWER(NEW.name), ' ', '-');

在MySQL 5.7中,他们现在有generated columns,所以你可以做同样的事情,而不需要编写触发器:

代码语言:javascript
复制
CREATE TABLE mytable (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  slug VARCHAR(100) AS (REPLACE(LOWER(name), ' ', '-')
);
票数 3
EN

Stack Overflow用户

发布于 2016-08-10 12:31:00

试试这个例子--

代码语言:javascript
复制
UPDATE yourTable SET yourColumn = LOWER(replace('Your Value', ' ', '_')) 
票数 0
EN

Stack Overflow用户

发布于 2016-08-10 12:55:32

你也可以用你的编程语言做到这一点。如果你正在用php编码,你可以像下面这样做,接受一个新的变量,比如$slug

代码语言:javascript
复制
$name='Jone Doe'; //the name value you getting from form or input

//convert string into lower. It will give you 'jon doe'
$nameInLower = strtolower($name); 

// now replace space with hyphen.
$slug=str_replace(' ', '-',$nameInLower);

将$slug变量与name列一起插入到数据库表中(考虑到id是自动递增的列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38864207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档