在mysql中为一个4位数的长数字添加一位数字



我试图得到一个mysql脚本,这改变了每4位数的长数字"一个5位数的长度,通过添加"0"在每个数字的开头。这就是我所尝试的:

SELECT * FROM `customer_address_entity_text` WHERE CHAR_LENGTH(value) < 5;
SELECT CONCAT("0", CAST(value as CHAR(50)) AS value;

但是它显示了一个错误,没有字段"value"发现:

#1054 - Unknown field 'value' in field list (translated)
如果有人能帮我的话,那就太好了。

(当我没有尝试将'value'转换为CHAR时,它也会给出这个错误)

value = "0"+ value' in mysql

的例子:'value = 1234;Value = "0"+价值;Value = 01234'和mysql

两个问题:

  • CONCAT(
  • 缺少右括号
  • 您的第二个SELECT没有FROM子句,因此确实没有value字段。

因此将CONCAT表达式移动到第一个SELECT子句中并平衡括号:

SELECT c.*, CONCAT("0", CAST(value as CHAR(50))) AS value 
FROM `customer_address_entity_text`  c
WHERE CHAR_LENGTH(value) < 5;

如果你的目的是用0填充所有值,使它们得到5位数字,因此它也将1转换为"00001"和12到"00012",然后使用LPAD:

SELECT c.*, LPAD(value, 5, "0") AS value 
FROM `customer_address_entity_text`  c;

更新value字段:

UPDATE `customer_address_entity_text` 
SET value = LPAD(value, 5, "0");

或者,使用原始concat版本:

UPDATE `customer_address_entity_text` 
SET value = CONCAT("0", CAST(value as CHAR(50)))
WHERE CHAR_LENGTH(value) < 5;

最新更新