Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用concat的MySQL更新未工作_Mysql_Concat - Fatal编程技术网

使用concat的MySQL更新未工作

使用concat的MySQL更新未工作,mysql,concat,Mysql,Concat,我应该在字符串前加一个零 首先,我选择要验证的数据 mysql> SELECT cp, LENGTH(cp), CONCAT(0, `cp`) FROM communes WHERE LENGTH(cp) < 5 ORDER BY cp ASC LIMIT 4; +------+------------+-----------------+ | cp | LENGTH(cp) | CONCAT(0, `cp`) | +------+------------+-----------

我应该在字符串前加一个零

首先,我选择要验证的数据

mysql> SELECT cp, LENGTH(cp), CONCAT(0, `cp`) FROM communes WHERE LENGTH(cp) < 5
ORDER BY cp ASC LIMIT 4;
+------+------------+-----------------+
| cp   | LENGTH(cp) | CONCAT(0, `cp`) |
+------+------------+-----------------+
| 1000 |          4 | 01000           |
| 1000 |          4 | 01000           |
| 1000 |          4 | 01000           |
| 1090 |          4 | 01090           |
+------+------------+-----------------+
4 rows in set (0.03 sec)

非常感谢

您的CP列是一个整数而不是字符串,因此它将始终被视为整数。如果要将6位数字的格式更改为字符(6)。

使用以下查询:

UPDATE communes
SET cp = CONCAT( CAST( 0 as char), `cp`) 
WHERE LENGTH(cp) < 5;
更新公社
设置cp=CONCAT(将0转换为字符),`cp`)
式中,长度(cp)<5;

您必须将
Number
转换为
char
(“CAST”)
选择
,然后选择
长度(cp)
,这是一个整数4(我假定)。为什么这对第二个
UPDATE
查询不起作用?是的,它现在起作用了一个问题:为什么CONCAT使用SELECT而不使用UPDATE?@cyphos选择他的答案作为已接受的答案,如果这对您有帮助的话。然而,我仍然觉得,如果第一个查询给出了这些结果,那么第二个查询应该是有效的。不过我还没有测试。长度将隐式地将整数转换为字符以计算其大小。另一方面,更新会将varchar字符串转换为其整数值,因为它的类型是integer。尝试使用以下子句进行选择,其中1='000001'
其中1='001.00'
甚至
其中1.0='0001.00
它们都将返回true,因为它们都转换为相同的值类型感谢saamorim和BLaZuRE
mysql> describe communes;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(10)      | NO   | PRI | NULL    | auto_increment |
| title      | varchar(255) | NO   |     | NULL    |                |
| cp         | int(6)       | NO   |     | NULL    |                |
| dept       | varchar(255) | NO   |     | NULL    |                |
| code_insee | int(11)      | NO   |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
UPDATE communes
SET cp = CONCAT( CAST( 0 as char), `cp`) 
WHERE LENGTH(cp) < 5;