0.3 Why string Exists
สัญลักษณ์ตัวเดียวมันน่าเบื่อ เราแทบจะอยากพูดเป็นคำหรือประโยคเสมอ เราก็เลยเอา char หลายๆ ตัวมาเรียงกัน แล้วเรียกมันว่า string
แนวคิดหลัก
Section titled “แนวคิดหลัก”string = [ 'H', 'E', 'L', 'L', 'O' ] 1 char × 5 = one stringแค่นั้นจริงๆ — string คือ list ของ characters ภายใต้ชื่อเดียว
ใน C คุณจะเห็นโครงสร้าง list ด้วยตาตัวเอง:
#include <stdio.h>int main() { char word[] = "HELLO"; printf("%zu\n", sizeof(word)); // 6 (5 ตัวอักษร + 1 ตัวซ่อน '\0') printf("%c\n", word[0]); // H printf("%c\n", word[4]); // O return 0;}6 bytes สำหรับ “HELLO”? ใช่! C strings มี null byte ('\0') ที่มองไม่เห็นต่อท้าย เพื่อบอกว่า “string จบตรงนี้”
นี่คือเหตุผลที่ SQL ประดิษฐ์ VARCHAR ที่มี length prefix — เพื่อหลีกเลี่ยง null-terminator trick ของ C
พิมพ์ HELLO ในเซลล์ A1 แล้วลอง:
| สูตร | ผลลัพธ์ | ทำไม |
|---|---|---|
=LEN(A1) | 5 | 5 characters |
=MID(A1, 1, 1) | "H" | ตัวแรก |
=MID(A1, 3, 1) | "L" | ตัวที่ 3 |
=A1 & " WORLD" | "HELLO WORLD" | ต่อ string ได้ |
คุณเพิ่งจัดการ string เหมือน list ที่ index เข้าไปได้ — เหมือนกับทุกภาษา programming
word = "HELLO"len(word) # 5word[0] # 'H'word[2] # 'L'word + " WORLD" # 'HELLO WORLD'operation เดียวกัน syntax ต่างกัน แนวคิดเดียวกัน: string = list of chars
SELECT LENGTH('HELLO'), -- 5 SUBSTRING('HELLO', 1, 1), -- 'H' 'HELLO' || ' WORLD'; -- 'HELLO WORLD'เหมือนกันอีก!
ทำไมชื่อเรียกถึงต่างกัน?
Section titled “ทำไมชื่อเรียกถึงต่างกัน?”| ภาษา/Tool | เรียกว่า |
|---|---|
| C | char[] หรือ char* (ไม่มี “string” type แยก) |
| Google Sheets | ”text” (ไม่พูดว่า “string” แต่เป็นสิ่งเดียวกัน) |
| Python | str |
| SQL | VARCHAR, TEXT, CHAR |
แนวคิดเดียวกัน สะกดต่างกัน เพราะแต่ละ tool ถูกประดิษฐ์โดยคนละกลุ่มคนละยุค