mysql> create table abc (value decimal(31,0) not null);
Query OK, 0 rows affected (0.13 sec)

mysql> insert into abc values (1);insert into abc values (12);insert into abc values (123);insert into abc values (1234);insert into abc values (12345);insert into abc values (123456);insert into abc values (1234567);insert into abc values (12345678);insert into abc values (123456789);insert into abc values (1234567890);insert into abc values (12345678901);insert into abc values (123456789012);insert into abc values (1234567890123);insert into abc values (12345678901234);insert into abc values (123456789012345);insert into abc values (1234567890123456);insert into abc values (12345678901234567);insert into abc values (123456789012345678);insert into abc values (1234567890123456789);insert into abc values (12345678901234567890);insert into abc values (123456789012345678901);insert into abc values (1234567890123456789012);insert into abc values (12345678901234567890123);insert into abc values (123456789012345678901234);insert into abc values (1234567890123456789012345);insert into abc values (12345678901234567890123456);insert into abc values (123456789012345678901234567);insert into abc values (1234567890123456789012345678);insert into abc values (12345678901234567890123456789);insert into abc values (123456789012345678901234567890);

mysql> select * from abc where value = '12345678901234567';
+-------------------+
| value             |
+-------------------+
| 12345678901234567 |
+-------------------+
1 row in set (0.00 sec)

mysql> select * from abc where value = '123456789012345678';
Empty set (0.00 sec)

mysql> select * from abc where value = '1234567890123456789';
Empty set (0.00 sec)

mysql> select * from abc where value = '12345678901234567890';
Empty set (0.00 sec)

mysql> select * from abc where value = '123456789012345678901';
+-----------------------+
| value                 |
+-----------------------+
| 123456789012345678901 |
+-----------------------+
1 row in set (0.00 sec)

mysql> alter table abc add index (value);
Query OK, 30 rows affected (0.08 sec)
Records: 30  Duplicates: 0  Warnings: 0

mysql> select * from abc where value = cast('12345678901234567890' as decimal(31,0));
+----------------------+
| value                |
+----------------------+
| 12345678901234567890 |
+----------------------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+-------+------+---------------------------------------+
| Level | Code | Message                               |
+-------+------+---------------------------------------+
| Error | 1292 | Truncated incorrect DECIMAL value: '' |
+-------+------+---------------------------------------+
1 row in set (0.00 sec)

mysql> truncate abc;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into abc values (12345678901234567890);
Query OK, 1 row affected (0.00 sec)

mysql> select * from abc where value = '12345678901234567890';
Empty set (0.00 sec)

mysql> select * from abc where value = 12345678901234567890;
+----------------------+
| value                |
+----------------------+
| 12345678901234567890 |
+----------------------+
1 row in set (0.00 sec)

mysql> select * from abc where value = cast('12345678901234567890' as decimal(31,0));
+----------------------+
| value                |
+----------------------+
| 12345678901234567890 |
+----------------------+
1 row in set (0.01 sec)

mysql> insert into abc values (1);
Query OK, 1 row affected (0.00 sec)

mysql> select * from abc where value = cast('12345678901234567890' as decimal(31,0));
+----------------------+
| value                |
+----------------------+
| 12345678901234567890 |
+----------------------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+-------+------+---------------------------------------+
| Level | Code | Message                               |
+-------+------+---------------------------------------+
| Error | 1292 | Truncated incorrect DECIMAL value: '' |
+-------+------+---------------------------------------+
1 row in set (0.00 sec)

