我在我的用戶列表中有兩列:name-displayed
和short-name
。MySQL:根據同一個表中的列值修改列
name-displayed
填充了用戶的全名,例如「John Doe」。在short-name
中,存在短值,例如「john-doe」(基本上沒有大寫字母和連字符)。
如何根據name-displayed
中的數據修改short-name
中的數據?我確信我可以使用基於UPDATE
的自連接,但我不確定如何在列中實現數據更改。
任何幫助將非常感激!
我在我的用戶列表中有兩列:name-displayed
和short-name
。MySQL:根據同一個表中的列值修改列
name-displayed
填充了用戶的全名,例如「John Doe」。在short-name
中,存在短值,例如「john-doe」(基本上沒有大寫字母和連字符)。
如何根據name-displayed
中的數據修改short-name
中的數據?我確信我可以使用基於UPDATE
的自連接,但我不確定如何在列中實現數據更改。
任何幫助將非常感激!
您需要爲此使用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 ;
update table a join table b on a.id = b.id
set a.short-name = b.name-displayed;
我明白你需要設置名稱顯示相同的短名稱, 如果情況並非如此 護理解釋。 你想修改什麼?
謝謝Nosh - 根據你的語法創建一個觸發器完美工作。再次感謝! – jusher
歡迎;你可能需要爲'BEFORE UPDATE'做這件事。 – Nosh