Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat Ralat MySQL 1292: Nilai DOUBLE Salah Dipotong Walaupun Tanpa Menggunakan Doubles?

Mengapa Saya Mendapat Ralat MySQL 1292: Nilai DOUBLE Salah Dipotong Walaupun Tanpa Menggunakan Doubles?

Barbara Streisand
Barbara Streisandasal
2024-12-25 04:43:20587semak imbas

Why Am I Getting MySQL Error 1292: Truncated Incorrect DOUBLE Value Even Without Using Doubles?

Kod Ralat 1292: Nilai GANDA Salah Dipenggal dalam MySQL

Menghadapi kod ralat 1292 boleh mengecewakan, terutamanya apabila anda menegaskan bahawa anda tidak t menggunakan sebarang nilai berganda. Mari kita mendalami masalah dan meneroka penyelesaian yang berpotensi.

Dalam pertanyaan yang disediakan, anda cuba mengisi jadual dengan nilai daripada jadual lain menggunakan pernyataan INSERT...SELECT. Satu perincian penting ialah memastikan jenis data dan saiznya dalam kedua-dua jadual sepadan.

Secara khususnya, dalam mesej ralat, anda akan melihat bahawa terdapat nilai DOUBLE yang salah terlibat. Walau bagaimanapun, anda menyebut bahawa anda tidak mempunyai sebarang medan berganda dalam jadual anda. Berikut ialah punca yang berpotensi:

ta.phone_number

Medan ini berkemungkinan bukan dua kali ganda tetapi sebaliknya VARCHAR atau CHAR dalam kedua-dua jadual. Apabila anda melakukan pengiraan atau perbandingan yang melibatkan nilai berangka dalam rentetan, seperti dalam klausa WHERE untuk pemadanan panjang, MySQL mungkin cuba menukar rentetan itu kepada nilai berangka, mengakibatkan nilai DOUBLE tidak betul dipenggal.

Untuk menyelesaikannya isu ini, anda mempunyai dua pilihan:

  1. Pastikan bahawa jenis data dalam kedua-dua jadual untuk padanan medan nombor_telefon, seperti dengan menukarnya kepada CHAR atau VARCHAR dalam kedua-dua jadual.
  2. Sebagai alternatif, tukar medan nombor_telefon kepada jenis data berangka dalam pertanyaan menggunakan fungsi CAST() secara eksplisit:
CAST(REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','') AS UNSIGNED) = 10

Dengan menukar nombor_telefon kepada jenis angka UNSIGNED, MySQL boleh melakukan dengan betul perbandingan berangka tanpa menukarnya kepada nilai DOUBLE.

Dengan menangani percanggahan jenis data ini, anda boleh mengelakkan ralat nilai DOUBLE yang tidak betul dipotong dan memastikan pemindahan data berjaya.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat MySQL 1292: Nilai DOUBLE Salah Dipotong Walaupun Tanpa Menggunakan Doubles?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn