MySQL: 根据相同 table 中的列值修改列
MySQL: Modify column based on column values in same table
我的用户在同一 table 中有两列:name-displayed
和 short-name
。
name-displayed
填充用户的全名,例如 "John Doe"。 short-name
中有短值,例如"john-doe"(本质上是去大写和连字符)。
如何根据name-displayed
中的数据修改short-name
中的数据?我确信我可以使用基于 UPDATE
的自连接,但我不确定如何跨列实现数据更改。
如有任何帮助,我们将不胜感激!
为此您需要使用 Lower
和 Replace
函数。
请参阅:文档中的 Lower and Replace。
Update <table_name>
set `short-name` = REPLACE(LOWER(`name-displayed`), ' ','-')
where <conditions>;
如果您希望自动完成此操作,则需要按照 Walter_Ritzel 的建议编写触发器。
delimiter //
CREATE TRIGGER auto_set_short_name BEFORE INSERT ON account
FOR EACH ROW
BEGIN
SET NEW.`short-name` = REPLACE(LOWER(`name-displayed`), ' ','-');
END;//
delimiter ;
您可以使用触发器:Triggers
Insert/Update之前的触发器可以轻松解决这个问题。
delimiter //
CREATE TRIGGER ins_sum BEFORE INSERT OR UPDATE ON table
FOR EACH ROW
begin
SET New.`short-name` = REPLACE(LOWER(NEW.`name-displayed`), ' ','-') ;
end;
//
使用反引号或此字符:```,以确保 -
不会被解释为减号。
update table a join table b on a.id = b.id
set a.short-name = b.name-displayed;
我知道您需要将名称显示设置为与短名称相同,
如果不是这样
小心解释。
你要修改什么??
我的用户在同一 table 中有两列:name-displayed
和 short-name
。
name-displayed
填充用户的全名,例如 "John Doe"。 short-name
中有短值,例如"john-doe"(本质上是去大写和连字符)。
如何根据name-displayed
中的数据修改short-name
中的数据?我确信我可以使用基于 UPDATE
的自连接,但我不确定如何跨列实现数据更改。
如有任何帮助,我们将不胜感激!
为此您需要使用 Lower
和 Replace
函数。
请参阅:文档中的 Lower and Replace。
Update <table_name>
set `short-name` = REPLACE(LOWER(`name-displayed`), ' ','-')
where <conditions>;
如果您希望自动完成此操作,则需要按照 Walter_Ritzel 的建议编写触发器。
delimiter //
CREATE TRIGGER auto_set_short_name BEFORE INSERT ON account
FOR EACH ROW
BEGIN
SET NEW.`short-name` = REPLACE(LOWER(`name-displayed`), ' ','-');
END;//
delimiter ;
您可以使用触发器:Triggers
Insert/Update之前的触发器可以轻松解决这个问题。
delimiter //
CREATE TRIGGER ins_sum BEFORE INSERT OR UPDATE ON table
FOR EACH ROW
begin
SET New.`short-name` = REPLACE(LOWER(NEW.`name-displayed`), ' ','-') ;
end;
//
使用反引号或此字符:```,以确保 -
不会被解释为减号。
update table a join table b on a.id = b.id
set a.short-name = b.name-displayed;
我知道您需要将名称显示设置为与短名称相同, 如果不是这样 小心解释。 你要修改什么??