การต่อข้อความ: || และ CONCAT
ต่อสตริงด้วยตัวดำเนินการ || และ CONCAT() พร้อมทำความเข้าใจว่าแต่ละวิธีจัดการกับอินพุต NULL อย่างไร
การต่อข้อความ: || และ CONCAT เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
การต่อสตริงมาตรฐาน: ||
ตัวดำเนินการมาตรฐานของ SQL สำหรับการต่อสตริงคือ ||:
SELECT first_name || ' ' || last_name AS full_name FROM users;
SELECT 'Hello, ' || name || '!' FROM users;|| เมื่อใช้กับ NULL จะได้ NULL
หากตัวถูกดำเนินการใดเป็น NULL นิพจน์ทั้งหมดจะกลายเป็น NULL ต้องระบุการจัดการให้ชัดเจน:
SELECT first_name || ' ' || NULL; -- NULL
-- Defend with COALESCE:
SELECT first_name || ' ' || COALESCE(last_name, '') FROM users;CONCAT: ทางเลือกที่ปลอดภัยกับ NULL
CONCAT จะถือว่า NULL เป็นสตริงว่าง:
SELECT CONCAT(first_name, ' ', last_name) FROM users;
SELECT CONCAT(first_name, ' ', NULL); -- 'first_name ' (no NULL)CONCAT_WS: พร้อมตัวคั่น
เหมาะสำหรับ "การต่อโดยมีตัวคั่น" และอ่านเข้าใจได้มากที่สุด:
SELECT CONCAT_WS(' ', title, first_name, middle_initial, last_name) AS pretty_name
FROM users;
-- ' ' between non-NULL fields onlyการผสมสตริงกับตัวเลข
คุณสามารถแปลงชนิดข้อมูลเองหรืออาศัยการแปลงโดยปริยายได้ (PostgreSQL มีกฎเข้มงวด — การแปลงชนิดข้อมูลอย่างชัดเจนปลอดภัยกว่า):
SELECT 'Order #' || id::TEXT FROM orders;
SELECT CONCAT('Order #', id) FROM orders; -- CONCAT auto-castsการสร้างสตริงสำหรับแสดงผล
ประกอบป้ายกำกับที่อ่านเข้าใจได้:
SELECT id,
email,
CONCAT_WS(', ', city, region, country) AS location
FROM users;การต่อค่ารวมด้วย STRING_AGG
หากต้องการต่อค่าจากหลายแถว ให้ใช้ STRING_AGG (หรือ array_agg):
SELECT user_id,
STRING_AGG(name, ', ' ORDER BY name) AS tag_names
FROM user_tags
GROUP BY user_id;FORMAT สำหรับสตริงตามแม่แบบ
format() ของ PostgreSQL ใช้รูปแบบเดียวกับ printf และจัดการ NULL ได้อย่างปลอดภัย:
SELECT format('User %s (id=%s) joined on %s',
full_name, id, created_at::DATE)
FROM users;สตริงว่างเทียบกับ NULL
ตัดสินใจสำหรับแต่ละคอลัมน์ว่าสตริงว่างเป็นค่าที่ถูกต้องหรือไม่ หากไม่ใช่ ให้ถือว่า '' ที่ป้อนเข้ามาเป็น NULL:
INSERT INTO contacts (phone) VALUES (NULLIF(:phone, ''));ค่าลิเทอรัลสตริงหลายบรรทัด
PostgreSQL รองรับการใช้เครื่องหมายดอลลาร์ครอบค่า เพื่อสร้างสตริงหลายบรรทัดโดยไม่ต้องใช้อักขระหลีก:
SELECT $$Hello,
'World' — with quotes!$$;
SELECT $custom_tag$ ... $custom_tag$;ประสิทธิภาพการต่อสตริง
การต่อสตริงทำได้รวดเร็ว — หลายล้านรายการต่อวินาที โดยทั่วไปต้นทุนอยู่ที่การอ่านและเขียนแถว ไม่ใช่การดำเนินการกับสตริง
สรุปทบทวน
ใช้ || สำหรับการต่อแบบมาตรฐาน ใช้ CONCAT/CONCAT_WS เพื่อข้าม NULL ใช้ FORMAT สำหรับแม่แบบ และใช้ STRING_AGG เพื่อต่อค่าจากหลายแถว
ตรวจสอบความเข้าใจ
ถ้า last_name เป็น NULL แล้ว first_name || ' ' || last_name จะส่งคืนค่าใด
คำถามที่พบบ่อย
บทเรียน “การต่อข้อความ: || และ CONCAT” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การต่อข้อความ: || และ CONCAT” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การต่อข้อความ: || และ CONCAT”
ต่อสตริงด้วยตัวดำเนินการ || และ CONCAT() พร้อมทำความเข้าใจว่าแต่ละวิธีจัดการกับอินพุต NULL อย่างไร คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การต่อข้อความ: || และ CONCAT” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม
ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การต่อข้อความ: || และ CONCAT
- UPPER, LOWER, SUBSTRING, REPLACE
- TRIM, LPAD, RPAD
- บทนำการค้นหาข้อความเต็มรูปแบบ (tsvector, to_tsquery)