Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีรวมคอลัมน์หลายคอลัมน์ด้วย Separator ใน Android SQLite

บทนำ: 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 แสดงแต่ละแถวเป็นข้อความเดียวรวมชื่อ เงินเดือน และวันที่เวลา คั่นด้วย :