我有数据库在mysql和有维护3列,即ID,名称,段塞。
Slug列与name列相同,但我在此处放入name列的组合。假设名称是Micky,那么在slug中,我希望它应该显示micky Mehta。在slug中,我希望所有内容都是小写字母&如果是空格,则应该用破折号代替。所有这一切,因为我想为我的网站搜索引擎友好的网址。现在我可以在添加新产品时使用program执行此操作,但如果我可以直接使用mySQL执行此操作,是否也可以?我的意思是,在mySQL中有没有执行这种任务的函数?
发布于 2016-08-10 12:32:20
您可以更新数据以适合您的方案:
UPDATE mytable SET slug = REPLACE(LOWER(name), ' ', '-');如果希望在每次添加新行或更新现有行时自动执行此操作,可以使用触发器:
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,所以你可以做同样的事情,而不需要编写触发器:
CREATE TABLE mytable (
id INT PRIMARY KEY,
name VARCHAR(100),
slug VARCHAR(100) AS (REPLACE(LOWER(name), ' ', '-')
);发布于 2016-08-10 12:31:00
试试这个例子--
UPDATE yourTable SET yourColumn = LOWER(replace('Your Value', ' ', '_')) 发布于 2016-08-10 12:55:32
你也可以用你的编程语言做到这一点。如果你正在用php编码,你可以像下面这样做,接受一个新的变量,比如$slug
$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是自动递增的列。
https://stackoverflow.com/questions/38864207
复制相似问题