Apabila pangkalan data membaca medan nombor sebagai teks, ia mengisih aksara demi aksara, jadi 100 jatuh sebelum 9, dan sebarang ujian seperti “kurang daripada 20” memberi hasil yang salah. Pembetulannya ialah membersihkan nilai dan menetapkan jenis medan yang betul semasa langkah import, kemudian menyemak sampel dengan sumber.
Halaman ini menyokong struktur pangkalan data dan pengesahan serta pelajaran tentang mengesan tafsiran nombor-teks yang salah. Langkahnya tidak bergantung pada perisian tertentu, kerana nama menu berubah antara produk dan versi.
Apa yang sebenarnya berlaku?
Setiap medan pangkalan data mempunyai jenis data. Medan teks menyimpan aksara dan membandingkannya dari kiri ke kanan. Medan nombor menyimpan nilai dan membandingkannya mengikut saiz. Semasa import, perisian meneka jenis daripada nilai yang dilihatnya, atau menggunakan jenis yang anda pilih.
Tiga punca lazim:
- Aksara terlepas dalam satu baris, seperti “RM 2.00”, ruang di hujung atau koma dalam “1,200”. Satu nilai buruk boleh menjadikan seluruh lajur teks.
- Lalai teks diterima pada skrin import. Perisian menawarkan teks untuk setiap lajur dan anda terus klik.
- Nilai yang sepatutnya teks dianggap nombor, iaitu masalah yang terbalik: nombor telefon hilang sifar di hadapan.
Contoh berlangkah
Sebuah fail kantin rekaan mempunyai empat baris.
| ItemID | Item | Price | Stock |
|---|---|---|---|
| C01 | Nasi lemak | 3.50 | 12 |
| C02 | Teh ais | RM 2.00 | 9 |
| C03 | Roti canai | 1.50 | 100 |
| C04 | Kuih | 0.80 | 40 |
Pelajar mengimport fail itu dan membiarkan semua lajur sebagai teks. Kemudian mereka mengisih Stock menaik dan mendapat 100, 12, 40, 9. Isihan teks membandingkan aksara pertama dahulu: “100” dan “12” kedua-duanya bermula dengan 1, dan “0” lebih rendah daripada “2”, jadi 100 datang sebelum 12. Kemudian 40 dan 9 menyusul kerana 4 lebih rendah daripada 9.
Pertanyaan Stock < 20 memulangkan 100 dan 12 sebagai teks. Ia terlepas 9, kerana “9” lebih tinggi daripada “2”. Jawapan nombor yang betul ialah 12 dan 9.
Pembetulan, langkah demi langkah:
- Simpan fail asal dan bekerja pada salinan.
- Bersihkan sumber: tukar “RM 2.00” kepada 2.00. Paparkan RM melalui format mata wang dalam pangkalan data, bukan di dalam nilai.
- Tetapkan jenis semasa import: ItemID teks, Item teks, Price nombor (perpuluhan), Stock nombor (bulat).
- Semak: isih Stock ke dua-dua arah. Anda kini patut nampak 9, 12, 40, 100 secara menaik.
- Jalankan semula pertanyaan: Stock < 20 patut memulangkan 12 dan 9 sahaja.
Anda boleh mencuba idea isihan dan penapisan dengan data rekaan dalam makmal latihan SQL baca sahaja.
Kesilapan yang perlu diawasi
Seorang pelajar menukar medan Price kepada nombor selepas import dan melihat nilai RM 2.00 menjadi kosong. Mereka menyangka perisian rosak. Sebenarnya nilai itu tidak dapat dibaca sebagai nombor, jadi ia digugurkan atau ditandakan. Pembetulannya ialah membersihkan nilai dahulu, kemudian menukar, dan sentiasa membandingkan rekod dengan fail asal.
Nilai berupa nombor yang mana patut kekal teks?
| Nilai | Jenis | Sebab |
|---|---|---|
| Nombor telefon yang bermula dengan 0 | Teks | Sifar di hadapan penting; tidak pernah dikira |
| Poskod 08000 | Teks | Sifar di hadapan penting |
| ID pelajar S0042 | Teks | Mengandungi huruf dan corak kod |
| Kuantiti stok | Nombor | Diisih dan dibandingkan mengikut saiz |
| Harga | Nombor | Ditambah, dipuratakan, dibandingkan |
Ujiannya mudah: adakah saya akan menambah, memuratakan atau membandingkannya mengikut saiz? Jika ya, gunakan jenis nombor.
Semak kendiri
1. Nilai Stock 5, 40 dan 7 diisih menaik sebagai teks. Apakah susunannya?
Lihat jawapan
Teks membandingkan aksara pertama: 4 lebih rendah daripada 5, dan 5 lebih rendah daripada 7. Maka susunannya ialah 40, 5, 7.
2. Satu lajur umur diimport sebagai teks kerana satu sel mengandungi “16 yrs”. Apakah dua pembetulan yang munasabah?
Lihat jawapan
Bersihkan sel sumber kepada 16 dan tetapkan jenis medan kepada nombor sebelum import, atau betulkan sel dalam pangkalan data dan kemudian tukar jenis. Dalam kedua-dua kes, semak sampel dengan fail asal.
3. Mengapa nombor telefon lebih baik disimpan sebagai teks?
Lihat jawapan
Ia pengecam, bukan kuantiti. Jenis nombor boleh membuang sifar di hadapan, dan anda tidak pernah menambah atau memuratakan nombor telefon.
Ke mana selepas ini
Latih memilih jenis daripada nilai sampel dengan memilih jenis medan, kemudian mengimport set data rekaan yang kecil. Apabila anda perlu menunjukkan hasil sebagai bukti, penyemak tugas dan bukti praktikal ICT memberi senarai semak yang tidak bergantung pada perisian, dan pelajaran tentang menangkap bukti yang menunjukkan tetapan berkaitan merangkumi bahagian tangkapan skrin.
Masalah import mudah dibetulkan apabila anda tahu di mana hendak melihat, dan lebih sukar apabila tetapan yang salah berada pada skrin yang anda klik begitu sahaja. Tuisyen ICT dalam talian satu-lawan-satu membolehkan guru melihat langkah itu bersama anda.