MySQL:使用 SUBSTRING 缩短列

Som*_*jit 0 mysql

我正在尝试这样做:

update student 
set student_name=SUBSTRING(student_name, 0, 8)
where student_name like 'MAX%';
Run Code Online (Sandbox Code Playgroud)

因此,我的目的是用原始内容的前 8 个字符更新该列。

但该student_name列被设置为空值。

为什么会发生这种情况?有人可以帮我解决这个问题吗

arh*_*ops 5

在更新任何内容之前,请选择类似的请求。

MariaDB [(none)]> select SUBSTRING('123456',1,2 ), SUBSTRING('123456',0,2 ); 
+--------------------------+--------------------------+
| SUBSTRING('123456',1,2 ) | SUBSTRING('123456',0,2 ) |
+--------------------------+--------------------------+
| 12                       |                          |
+--------------------------+--------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> 
Run Code Online (Sandbox Code Playgroud)

子字符串中的第一个数字无效或为负,导致空字符串。

  • 查看文档是一个好主意,但更重要的是始终使用相同的位置和确切的更新字符串进行选择。恢复混乱的数据是一件痛苦的事情。 (2认同)