MySQL: Mengisih Lajur VARCHAR sebagai Integer
Pangkalan data kadangkala menyimpan nombor sebagai rentetan (VARCHAR), selalunya disebabkan oleh sistem warisan atau kebergantungan luaran. Ini boleh menyebabkan hasil pengisihan yang salah apabila menggunakan perbandingan rentetan standard. Berikut ialah cara mengisih nombor berformat rentetan ini dengan betul dalam MySQL:
Penyelesaian Optimum: Penukaran Jenis Data
Pendekatan terbaik ialah mengubah jenis data lajur jadual kepada integer (INT, BIGINT, dll.). Ini memastikan pengisihan berangka yang betul dan mengelakkan isu masa depan.
Kaedah Alternatif (Apabila Perubahan Jenis Data Tidak Boleh Dilaksanakan):
CAST()
untuk menukar nilai VARCHAR kepada integer secara eksplisit sebelum mengisih:<code class="language-sql">SELECT col FROM yourtable ORDER BY CAST(col AS UNSIGNED);</code>
Ini memaksa MySQL untuk merawat nilai secara berangka semasa proses pengisihan. UNSIGNED
menghalang tafsiran nombor negatif.
<code class="language-sql">SELECT col FROM yourtable ORDER BY col + 0;</code>
MySQL akan cuba mentafsir rentetan sebagai nombor untuk operasi penambahan, mencetuskan penukaran tersirat.
String Value | Integer Value |
---|---|
'1' | 1 |
'ABC' | 0 |
'123miles' | 123 |
'3' | 0 |
Aksara bukan angka akan menghasilkan nilai 0. Aksara bukan angka terkemuka akan menyebabkan keseluruhan penukaran gagal.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyusun Nombor VARCHAR sebagai Integer dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!