บทนำ: SQLite ใน Android
SQLite เป็นฐานข้อมูล SQL แบบโอเพนซอร์ส จัดเก็บข้อมูลในไฟล์ข้อความ รองรับในตัว ไม่ต้องเชื่อมต่อ JDBC/ODBC
ตัวอย่าง: Concatenate คอลัมน์ด้วย Separator
ตัวอย่างนี้สาธิตการใช้ operator || รวมคอลัมน์ name, salary, datetime ด้วยเครื่องหมาย :
ขั้นตอนที่ 1-3: โปรเจกต์, Layout, MainActivity
โครงสร้างเหมือนตัวอย่างก่อนหน้า ทุกอย่างเหมือนกัน ยกเว้นคิวรี่ใน DatabaseHelper
ขั้นตอนที่ 4: DatabaseHelper.java - คิวรี่ CONCAT
public ArrayList<String> getAllContacts() {
SQLiteDatabase db = this.getReadableDatabase();
ArrayList<String> array_list = new ArrayList<>();
// ใช้ || รวมคอลัมน์ และ ' : ' เป็น separator
Cursor res = db.rawQuery(
"SELECT (name || ' : ' || salary || ' : ' || datetime) AS fullname " +
"FROM " + CONTACTS_TABLE_NAME,
null
);
res.moveToFirst();
while (!res.isAfterLast()) {
array_list.add(res.getString(res.getColumnIndex("fullname")));
res.moveToNext();
}
return array_list;
}
คำอธิบายการ Concatenate ใน SQLite
- Operator
||: ใช้ต่อสตริง (String Concatenation) - รูปแบบ :
column1 || 'separator' || column2 || 'separator' || column3 - Alias AS : ตั้งชื่อคอลัมน์ผลลัพธ์เป็น
fullname
ตัวอย่างผลลัพธ์
แทนที่จะได้คอลัมน์แยกกัน จะได้สตริงเดียวเช่น:
John Doe : 50000.00 : 2024-01-15 10:30:45
การประยุกต์ใช้
- สร้างข้อความแสดงผลสำหรับ ListView/RecyclerView โดยไม่ต้อง join ในโค้ด Java
- Export ข้อมูลเป็น CSV หรือข้อความแบบกำหนดเอง
- ลดการประมวลผลฝั่งแอป (Client-side)
ข้อควรระวัง
- คอลัมน์ที่เป็น NULL จะทำให้ผลลัพธ์ทั้งหมดเป็น NULL → ใช้
COALESCE(column, '')ป้องกัน - ตัวอย่าง:
COALESCE(name, '') || ' : ' || COALESCE(salary, '')
ผลลัพธ์
ListView แสดงแต่ละแถวเป็นข้อความเดียวรวมชื่อ เงินเดือน และวันที่เวลา คั่นด้วย :