Text Types
ภาพรวม Text Types
Section titled “ภาพรวม Text Types”| Type | ความยาว | Padding | ใช้เมื่อ |
|---|---|---|---|
CHAR(n) | คงที่ n ตัวอักษร | เติมช่องว่างต่อท้าย | รหัสความยาวคงที่ เช่น ISO code |
VARCHAR(n) | ไม่เกิน n ตัวอักษร | ไม่เติม | ข้อมูลทั่วไปที่มี max length |
TEXT | ไม่จำกัด | ไม่เติม | ข้อความยาว ๆ เช่น bio, description |
CHAR(n) — ความยาวคงที่
Section titled “CHAR(n) — ความยาวคงที่”ไม่มี concept นี้ — ช่องเก็บ text ได้ทุกความยาว
// เหมือน char array ขนาดคงที่char country_code[3]; // "TH\0"# Python ไม่มี fixed-length string# ต้อง validate เองcode = "TH"assert len(code) == 2CREATE TABLE countries ( code CHAR(2), -- 'TH', 'US', 'JP' name VARCHAR(100));
-- CHAR(2) จะเก็บ 'TH' เป็น 'TH' (เติมช่องว่างถ้าสั้นกว่า 2)INSERT INTO countries VALUES ('T', 'ไทย');-- เก็บเป็น 'T ' (มี space ต่อท้าย)VARCHAR(n) — ความยาวไม่เกิน n
Section titled “VARCHAR(n) — ความยาวไม่เกิน n”type ที่ใช้บ่อยที่สุดสำหรับ text ทั่วไป:
CREATE TABLE students ( student_id VARCHAR(6), -- ไม่เกิน 6 ตัว: 'STD001' name VARCHAR(100), -- ชื่อไม่เกิน 100 ตัว email VARCHAR(100) -- อีเมลไม่เกิน 100 ตัว);
-- ถ้าใส่เกิน n ตัวจะ errorINSERT INTO students (student_id, name, email)VALUES ('STD00001', 'ชื่อยาว', 'test@mail.com');-- ERROR: value too long for type character varying(6)TEXT — ไม่จำกัดความยาว
Section titled “TEXT — ไม่จำกัดความยาว”CREATE TABLE articles ( id SERIAL PRIMARY KEY, title VARCHAR(200), body TEXT -- ไม่จำกัดความยาว);เมื่อไหร่ควรใช้อะไร?
Section titled “เมื่อไหร่ควรใช้อะไร?”-- CHAR: รหัสที่ยาวเท่ากันเสมอcountry_code CHAR(2), -- 'TH', 'US'currency_code CHAR(3), -- 'THB', 'USD'
-- VARCHAR: ข้อมูลทั่วไปที่มี max ชัดเจนname VARCHAR(100),email VARCHAR(255),phone VARCHAR(15),
-- TEXT: เนื้อหายาว ๆ ไม่มี max ชัดเจนbio TEXT,description TEXT,notes TEXT