任何帮助都会非常感激..我对mySQL很新,并认为必须有一种更简单的方法来更新我的数据库。
所以我的问题是我有许多记录没有前导零,但我需要任何记录中的字符总数为5。
e.g。 6930实际上应该是06930
我遇到了这段代码,但我无法让它正常工作,有人能指出我正确的方向。
UPDATE `it_asset_register`.`tab_id_master`
SET tab_id_master.ID = LEFT('00000', 5-LEN(tab_id_master.ID)) + tab_id_master.ID
WHERE ID = '8407' AND LEN(tab_id_master.ID)<5 AND Len(tab_id_master.ID)>0;
由于
答案 0 :(得分:3)
LPAD 应该在这里完成工作:
SELECT LPAD ('123', 5, '0');
00123
SELECT LPAD ('12345', 5, '0');
12345
尝试:
UPDATE `it_asset_register`.`tab_id_master`
SET tab_id_master.ID = LPAD (tab_id_master.ID, 5, '0')
WHERE ID = '8407' AND LENGTH(tab_id_master.ID)<5 AND LENGTH(tab_id_master.ID)>0;
答案 1 :(得分:1)
要在MySQL中连接两个或多个字符串,必须使用CONCAT()
函数。
可能的解决方案是:
UPDATE tab_id_master
SET id = SUBSTRING(CONCAT('00000', id), -5)
WHERE LENGTH(id) > 0 AND LENGTH(id) < 5;
或者,您可以使用LPAD()
功能:
UPDATE tab_id_master
SET id = LPAD(id, 5, '0')
WHERE LENGTH(id) > 0 AND LENGTH(id) < 5;
此致
答案 2 :(得分:0)
UPDATE
table_name
SET
column_name = RIGHT('00000' + CAST(column_name AS CHAR), 5)
这会将5个零和您的ID连接到类似于&#39; 000001234&#39;的内容。然后它选择最右边的5个字符。
答案 3 :(得分:0)
您没有指定tab_id_master.ID
类型。如果它是数字类型,您将无法存储带前导零的数字,但您可以使用LPAD()
:
SET tab_id_master.ID = LPAD(tab_id_master.ID, 5, 0)