Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

NILAI UNSIGNED BIGINT DI luar jangkauan SQL Saya

Silakan baca "Penanganan di Luar Jangkauan dan Meluap ".
Tertulis:

mysql> SELECT 9223372036854775807 + 1;

ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807 + 1)'

Untuk mengaktifkan operasi agar berhasil dalam kasus ini, ubah nilainya menjadi unsigned;

mysql> SELECT CAST(9223372036854775807 AS UNSIGNED) + 1;
+-------------------------------------------+
| CAST(9223372036854775807 AS UNSIGNED) + 1 |
+-------------------------------------------+
|                       9223372036854775808 |
+-------------------------------------------+

Perubahan pada bagian dari kueri Anda, sebagai berikut, akan menyelesaikan masalah.

( CAST( quantity AS SIGNED ) - COUNT( game_moblist.spawn_id ) ) AS quantity_to_spawn

Jika tidak, Anda mungkin perlu mengubah sql_mode pada operasi yang tidak ditandatangani.

mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

lalu jalankan kueri Anda untuk mendapatkan hasil yang diinginkan.

Lihat juga postingan serupa yang dijawab di forum

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - PERBARUI beberapa baris dengan nilai berbeda dalam satu kueri

  2. Excel VBA:menulis ke database mysql

  3. Bagaimana cara menggunakan indeks secara efisien dalam kueri mysql

  4. Bagaimana cara menulis pernyataan IF ELSE dalam kueri MySQL?

  5. Kolom tidak dikenal dalam kesalahan 'daftar bidang' pada permintaan Pembaruan MySQL