我试图得到一个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;