我的用户在同一个表格中有两列:name-displayed
和short-name
。
name-displayed
填充了用户的全名,例如“John Doe”。在short-name
中,存在短值,例如“john-doe”(基本上是去大写和连字符)。
如何根据short-name
中的数据修改name-displayed
中的数据?我确信我可以使用基于UPDATE
的自我加入,但我不确定如何在列中实现数据更改。
非常感谢任何帮助!
答案 0 :(得分:0)
您需要使用Lower
和Replace
函数。
请参阅文档中的Lower和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 ;
答案 1 :(得分:0)
您可以使用触发器:Triggers
插入/更新之前的触发器可以轻松解决这个问题。
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;
//
使用反引号或此字符:```,以确保-
不被解释为减号。
答案 2 :(得分:-1)
update table a join table b on a.id = b.id
set a.short-name = b.name-displayed;
据我所知,你需要将名字显示设为与短名称相同, 如果不是这样的话 小心解释。 你要修改什么?