Leading Zeros & IDs
ปัญหา: 00123 กลายเป็น 123
Section titled “ปัญหา: 00123 กลายเป็น 123”เมื่อพิมพ์ 00123 ลงใน cell ปกติ Sheets จะ:
- ตรวจจับว่าเป็นตัวเลข
- ตัด leading zeros ออก → เก็บเป็น
123 - ข้อมูลเดิมหายไปถาวร — กู้คืนไม่ได้
พิมพ์: 00123เก็บจริง: 123แสดง: 123
// แม้ format กลับเป็น "00000" ก็ได้ 00123// แต่ถ้าเดิมพิมพ์ 0000123 — ข้อมูลจริงหายแล้ว!วิธีแก้ 4 วิธี
Section titled “วิธีแก้ 4 วิธี”วิธี 1: ตั้ง Plain Text ก่อนพิมพ์
Section titled “วิธี 1: ตั้ง Plain Text ก่อนพิมพ์”นี่คือวิธีที่ดีที่สุดและปลอดภัยที่สุด:
- เลือก column ที่จะใส่รหัส
- ไปที่ Format → Number → Plain text
- แล้วค่อยพิมพ์
00123
Format: Plain textพิมพ์: 00123เก็บจริง: "00123" (Text)ชิด: ซ้าย ← สัญญาณว่าเป็น Textวิธี 2: ใส่ Apostrophe นำหน้า
Section titled “วิธี 2: ใส่ Apostrophe นำหน้า”พิมพ์ '00123 — apostrophe บอก Sheets ว่า “เก็บเป็น Text”:
พิมพ์: '00123เก็บจริง: "00123" (Text)แสดงใน cell: 00123Formula Bar: '00123ข้อดี: เร็ว ไม่ต้อง format ล่วงหน้า
ข้อเสีย: ต้องจำใส่ทุกครั้ง, มี apostrophe ซ่อนอยู่
วิธี 3: ใช้ TEXT() สร้างรหัส
Section titled “วิธี 3: ใช้ TEXT() สร้างรหัส”ถ้ามีเลข 123 อยู่แล้ว ใช้ TEXT() เพิ่ม leading zeros:
=TEXT(123, "00000") → "00123"=TEXT(A1, "00000000") → "00000123" (8 หลัก)=TEXT(7, "000") → "007"Format string "00000" หมายถึง: แสดงอย่างน้อย 5 หลัก เติม 0 ข้างหน้า
วิธี 4: Custom Number Format
Section titled “วิธี 4: Custom Number Format”ถ้าต้องการเก็บเป็น Number แต่แสดง leading zeros:
- เลือก cells
- Format → Number → Custom number format
- พิมพ์
00000(จำนวน 0 = จำนวนหลักที่ต้องการ)
เก็บจริง: 123 (Number)แสดง: 00123#include <stdio.h>
int id = 123;
// แสดง leading zeros ด้วย printf formatprintf("%05d\n", id); // 00123
// เก็บเป็น string ถ้าต้องรักษา zeroschar student_id[] = "00123";
// แปลงตัวเลขเป็น string มี leading zeroschar buf[6];sprintf(buf, "%05d", id); // buf = "00123"id_num = 123
# วิธี 1: f-stringf"{id_num:05d}" # "00123"
# วิธี 2: zfillstr(id_num).zfill(5) # "00123"
# วิธี 3: formatformat(id_num, '05d') # "00123"
# เก็บเป็น string ตั้งแต่แรกstudent_id = "00123" # ปลอดภัยที่สุด-- วิธี 1: LPADSELECT LPAD(123, 5, '0'); -- '00123'
-- วิธี 2: เก็บเป็น VARCHAR ตั้งแต่แรกCREATE TABLE students ( student_id VARCHAR(8) NOT NULL, name VARCHAR(100));INSERT INTO students VALUES ('00123', 'สมชาย');
-- อย่าใช้ INT สำหรับรหัสที่มี leading zeros!เปรียบเทียบ 4 วิธี
Section titled “เปรียบเทียบ 4 วิธี”| วิธี | เก็บเป็น | Export CSV | คำนวณได้ | แนะนำสำหรับ |
|---|---|---|---|---|
| Plain Text | Text | คงอยู่ | ไม่ได้ | รหัสทุกชนิด |
| Apostrophe | Text | คงอยู่ | ไม่ได้ | แก้เฉพาะ cell |
| TEXT() | Text | คงอยู่ | ไม่ได้ | สร้างรหัสจากตัวเลข |
| Custom Format | Number | หายไป | ได้ | แสดงสวย ๆ เท่านั้น |
ตัวอย่างข้อมูลจริงที่ต้องระวัง
Section titled “ตัวอย่างข้อมูลจริงที่ต้องระวัง”| ข้อมูล | ตัวอย่าง | ต้องเก็บเป็น |
|---|---|---|
| รหัสนักศึกษา | 65010234 | Text (Plain Text) |
| เลขบัตรประชาชน | 0123456789012 | Text (ขึ้นต้น 0) |
| รหัสไปรษณีย์ | 01000 | Text (กรุงเทพฯ ขึ้นต้น 0) |
| เลขพัสดุ | 00912345678 | Text |
| เบอร์โทร | 0812345678 | Text (ขึ้นต้น 0) |
- Sheets ตัด leading zeros อัตโนมัติเพราะตีความเป็น Number
- ข้อมูลที่หายไปแล้ว กู้คืนไม่ได้
- วิธีที่ดีที่สุด: ตั้ง Plain Text ก่อน พิมพ์
- รหัสทุกชนิดที่ leading zeros มีความหมาย → เก็บเป็น Text เสมอ