Skip to content

2.1 char vs string in Practice

ใน Module 0 เราเรียนว่า char คือตัวอักษรเดียว string คือ list ของ characters ตอนนี้ถึงเวลาเอามาใช้จริง — และดูว่าเรื่องนี้สร้างปัญหาอะไรเวลาข้อมูลเดินทางข้ามเครื่องมือ

คำความหมายตัวอย่าง
charตัวอักษร 1 ตัว'A', 'ก', '5'
stringลำดับของ characters"Hello", "00123", "สวัสดี"
fixed-widthจองพื้นที่ตายตัวC: char[5], SQL: CHAR(5)
variable-widthใช้พื้นที่ตามจริงC: char*, SQL: VARCHAR(100)

ปัญหาจริง: ข้อมูลย้ามเครื่องมือ

Section titled “ปัญหาจริง: ข้อมูลย้ามเครื่องมือ”

สมมติคุณมี country code "TH" ที่เก็บแบบนี้:

  • Python: country = "TH" — 2 chars, variable
  • SQL column: CHAR(5) — เก็บเป็น "TH " (เติม 3 spaces)

เวลา Python ส่ง "TH" ไปเก็บใน SQL CHAR(5) แล้ว query กลับมา → อาจได้ "TH " (5 chars) แทน "TH" (2 chars) — JOIN กับ Python data อาจล้มเหลว!

Sheets ถือว่า text ทุกชิ้นเป็น variable-width — ไม่มีความแตกต่าง char กับ string:

เซลล์ค่า=LEN(...)หมายเหตุ
A1A1ตัวอักษร 1 ตัว
A2Hello55 ตัวอักษร
A3TH (มี 3 spaces ต่อท้าย)5Sheets เก็บ spaces ด้วย
A4TH2ไม่มี spaces

ลองทำ:

=A3=A4 → FALSE (!) — "TH " ≠ "TH"
=TRIM(A3)=A4 → TRUE — TRIM ตัด trailing spaces

Key insight: Sheets ไม่เติม spaces ให้อัตโนมัติ — แต่ถ้าข้อมูลมาจาก SQL CHAR(n) column, spaces จะติดมา และ Sheets ไม่ตัดให้

เมื่อไหร่ที่ char vs string สำคัญ

Section titled “เมื่อไหร่ที่ char vs string สำคัญ”
สถานการณ์สำคัญไหมทำไม
ทำงานแค่ใน Sheetsไม่Sheets ไม่มี fixed-width
ทำงานแค่ใน Pythonไม่Python ไม่มี char type
Python → SQLใช่SQL อาจ pad spaces ถ้าใช้ CHAR(n)
SQL → Python/Sheetsใช่trailing spaces ติดมา ต้อง strip
เขียน Cใช่sizeofstrlen, buffer overflow ถ้าจอง bytes ไม่พอ