MySQL错误 1406 (22001):数据对于列来说太长

4

考虑表格marks:

mysql> SELECT * FROM marks;
+--------+------------+-----------------------+
| name   | percentage | email                 |
+--------+------------+-----------------------+
| Bipin  | 84%        | bipin_p@gmail.com     |
| Deepak | 78%        | cool_deepak@gmail.com |
| Rohith | 82%        | rohith_s@gmail.com    |
| Sujit  | 94%        | sujit_jos@gmail.com   |
+--------+------------+-----------------------+

当我执行以下查询将值插入表中时,出现了错误:
mysql> INSERT INTO marks VALUES('&name','&percentage','&email');
ERROR 1406 (22001): Data too long for column 'percentage' at row 1 

这是一个基于在SQL中使用('&')插入值的其他方式信息的实验。

您能说明出了什么问题吗? 根据该博客,仅按ENTER将在查询后插入值。

期望的输出:

Enter value for name: John
Enter value for percentage: 76%
Enter value for email: john_doe@gmail.com

1
此 Oracle 功能在 MySQL 中不受支持。 - GMB
@GMB 当然有。只需在 shell 中运行 mysql 命令,您就会得到提示符。 - Barmar
@GMB https://dev.mysql.com/doc/refman/8.0/en/mysql.html@GMB https://dev.mysql.com/doc/refman/8.0/zh/mysql.html - Barmar
@Barmar 我正在使用MySQL 8.0命令行客户端运行MySQL。 - Bipin
1
不,MySQL没有这个功能。 - Barmar
显示剩余4条评论
1个回答

6

在MySQL中,会话变量以@为前缀,并且它们不会在引号内展开。因此,应该这样写:

mysql> SET @name = 'John', @percentage = '76%', @email = 'john_doe@gmail.com';
mysql> INSERT INTO marks VALUES(@name,@percentage,@email);

在Oracle中没有像自动提示变量这样的功能,您需要手动设置它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接