Mysql 如何使用WHERE子句更新表列?

Mysql 如何使用WHERE子句更新表列?,mysql,Mysql,我有一张表邮政编码。它有一列postcode,其中包含4/5位整数(即66770、66670、3090、6660)。我想运行一个查询,将0前置到所有包含4位数值的字段(即将“6660”更改为“06660”)。 我尝试了这个查询,但它显示0行受影响,并且没有进行任何更改 UPDATE postcode SET postcode = Concat('0', postcode) WHERE CHAR_LENGTH(postcode) = 4; 我做错什么了吗?试试这个:更新邮政编码SET postc

我有一张表
邮政编码
。它有一列
postcode
,其中包含4/5位整数(即66770、66670、3090、6660)。我想运行一个查询,将
0
前置到所有包含4位数值的字段(即将“6660”更改为“06660”)。 我尝试了这个查询,但它显示
0行受影响
,并且没有进行任何更改

UPDATE postcode SET postcode = Concat('0', postcode) WHERE CHAR_LENGTH(postcode) = 4;

我做错什么了吗?

试试这个:
更新邮政编码SET postcode=REPLACE(邮政编码,N''uuuuuuuu',0)


在这里,我只需将所有内容替换为4个字符到0(有4个下划线)

尝试以下操作:
更新邮政编码集postcode=replace(邮政编码,N''uuuuuu',0)


在这里,我只是将所有内容替换为4个字符到0(有4个下划线)

如果所有记录都是4或5,则不需要where子句和

UPDATE postcode SET postcode = RPAD(TRIM(postcode), 5, '0') 
我应该做这项工作。但是,如果您有3位数字的记录,并且不想更新这些记录,则需要添加要筛选的位置

UPDATE postcode 
SET postcode = LPAD(TRIM(postcode), 5, '0') 
WHERE CHAR_LENGTH(TRIM(postcode) = 4;

我正在使用
TRIM()

UPDATE postcode SET postcode = RPAD(TRIM(postcode), 5, '0') 
我应该做这项工作。但是,如果您有3位数字的记录,并且不想更新这些记录,则需要添加要筛选的位置

UPDATE postcode 
SET postcode = LPAD(TRIM(postcode), 5, '0') 
WHERE CHAR_LENGTH(TRIM(postcode) = 4;
我正在使用
TRIM()
以防
postcode
字段末尾有一些空白。

答案是:

UPDATE postcode set postcode = CONCAT('0', postcode) where LENGTH(postcode)=4;
答案是:

UPDATE postcode set postcode = CONCAT('0', postcode) where LENGTH(postcode)=4;

您的第一个答案附加了
0
而不是前缀。当我将
RPAD
更改为
LPAD
时,结果仍然是一样的,什么也没有发生。您的第一个答案附加了
0
而不是前缀。当我将
RPAD
更改为
LPAD
时,结果仍然是一样的,什么也没有发生。