Kekeliruan nombor-teks berlaku apabila pangkalan data menyimpan kuantiti sebagai teks, atau label sebagai nombor. Nilai kelihatan sama pada skrin, tetapi isihan, jumlah dan carian bertindak secara berbeza. Anda dijangka mengesan gejala, menamakan punca dan menyatakan cara membetulkannya.
Pelajaran ini menyusul mengimport set data rekaan yang kecil, kerana import ialah tempat kekeliruan biasanya bermula. Ia sebahagian daripada struktur pangkalan data dan pengesahan.
Apakah gejalanya?
Tiga ujian pantas mendedahkan bagaimana sesuatu lajur disimpan.
- Ujian isihan. Isih lajur secara menaik. Medan nombor memberi 5, 9, 12, 120. Medan teks memberi 12, 120, 5, 9, kerana ia membandingkan aksara demi aksara.
- Ujian jumlah. Minta jumlah atau purata. Lajur teks memberi sifar, ralat atau tiada pilihan langsung.
- Ujian sifar. Lihat label seperti poskod. Jika 08000 dipaparkan sebagai 8000, label itu disimpan sebagai nombor, dan sifar pada permulaan telah hilang.
Tarikh mempunyai masalah yang sama. Tarikh ditulis 10-03-2024 yang disimpan sebagai teks diisih mengikut aksara pertama, bukan mengikut kalendar.
Contoh berlangkah
Jadual kuantiti stok rekaan telah diimport. Kuantitinya ialah 25, 9, 120 dan 12.
Langkah 1, jalankan ujian isihan. Susunan menaik menunjukkan: 12, 120, 25, 9.
Langkah 2, banding dengan susunan yang dijangka. Jika dianggap nombor, susunan sepatutnya 9, 12, 25, 120. Hasil isihan berbeza, jadi ada sesuatu yang salah.
Langkah 3, terangkan coraknya. Teks membandingkan aksara pertama dahulu. Aksara pertama ialah 1, 1, 2 dan 9. Kedua-dua 12 dan 120 bermula dengan 1, jadi mereka datang dahulu. Antara kedua-duanya, 12 lebih pendek dan datang sebelum 120. Kemudian 25 bermula dengan 2, dan 9 bermula dengan 9. Susunan 12, 120, 25, 9 ialah apa yang dihasilkan oleh teks.
Langkah 4, sahkan puncanya. Jenis medan Quantity ialah teks.
Langkah 5, betulkan. Tukar jenis medan kepada integer. Jika program bertanya, sahkan penukaran. Isih semula: 9, 12, 25, 120.
Langkah 6, semak dengan jumlah. 25 + 9 + 120 + 12 = 166. Semak mengikut pasangan: 25 + 9 = 34 dan 120 + 12 = 132, dan 34 + 132 = 166. Medan kini boleh memberi jumlah.
Kesilapan yang perlu diawasi
Kesilapan lazim ialah “membetulkan” lajur teks dengan menukar setiap medan yang hanya mengandungi digit kepada nombor, termasuk nombor telefon.
Pembetulan yang salah: Medan Phone ditukar kepada integer supaya ia diisih secara berangka. Nilai telefon yang bermula dengan sifar menjadi lebih pendek, dan sifar itu hilang.
Nilai itu tidak lagi sepadan dengan nombor sebenar. Isihan mengikut nombor telefon jarang diperlukan, jadi penukaran itu menyelesaikan masalah yang tiada orang alami dan mencipta masalah sebenar.
Pembetulannya ialah bertanya untuk apa lajur itu digunakan. Jika nilai ditambah, dipuratakan atau dibandingkan sebagai jumlah, tukar.
Jika ia mengenal pasti sesuatu, kekalkan teks. Apabila sifar pada permulaan sudah hilang, pulihkan yang asal daripada fail sumber dengan mengimport semula dan menetapkan medan sebagai teks.
Semak diri anda
1. Lajur teks mengandungi 7, 70 dan 8. Tulis susunan menaik yang ditunjukkan pangkalan data.
Lihat jawapan
7, 70, 8. Teks membandingkan aksara pertama: 7, 7 dan 8. Antara dua yang bermula dengan 7, nilai lebih pendek iaitu 7 datang dahulu, kemudian 70.
2. Pengguna menjumlahkan lajur Price dan program memberi 0 walaupun harganya 5.50, 3.00 dan 2.50. Apakah punca yang mungkin dan jumlah selepas dibetulkan?
Lihat jawapan
Harga disimpan sebagai teks, jadi tidak boleh dijumlahkan. Selepas ditukar kepada mata wang atau perpuluhan, jumlahnya ialah 5.50 + 3.00 + 2.50 = 11.00.
3. Medan poskod menunjukkan 8000 sedangkan sumber ialah 08000. Apa yang salah, dan apakah pembetulannya?
Lihat jawapan
Poskod disimpan sebagai nombor, yang membuang sifar pada permulaan. Tetapkan medan sebagai teks dan import semula daripada sumber.
Langkah seterusnya
Seterusnya, lihat mengapa baris pendua merosakkan bilangan dan jumlah dalam menerangkan mengapa rekod pendua penting. Jika jenis medan perlu diulang kaji, kembali ke memilih jenis medan daripada nilai contoh.
Kemudian cuba set latihan struktur pangkalan data dan pengesahan. Log kesilapan dan baris gilir uji semula ialah tempat yang baik untuk merekod setiap kesilapan jenis anda.
Kekeliruan ini mudah dikenali selepas anda tahu namanya. Guru dalam tuisyen ICT dalam talian secara satu dengan satu boleh membina ujian pantas bersama anda supaya anda dapat mencari punca pada mana-mana jadual.