Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách sử dụng hàm TRIM() trong SQLite Android

Tác dụng của TRIM()

Hàm TRIM() loại bỏ khoảng trắng ở đầu và cuối chuỗi. Hữu ích khi người dùng nhập liệu có thể thừa space, hoặc dữ liệu nhập từ file CSV có khoảng trắng lạ.

Ví dụ hoàn chỉnh

Bước 1-2: Tạo project và giao diện (tương tự các bài trước)

Giao diện có 2 EditText (name, salary), 4 nút: Lưu, Làm mới, Cập nhật, Xóa tất cả, và 1 ListView.

Bước 3: MainActivity.java

Code giống hệt bài cast() (ID 1003060989), chỉ khác ở DatabaseHelper.

Bước 4: DatabaseHelper.java - Sử dụng TRIM()

package com.example.trimdemo;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;

class DatabaseHelper extends SQLiteOpenHelper {
    static final String DB_NAME = "salaryDatabase";
    static final String TABLE = "SalaryDetails";

    DatabaseHelper(Context context) {
        super(context, DB_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE + 
            "(id INTEGER PRIMARY KEY, name TEXT, salary REAL, datetime DEFAULT CURRENT_TIMESTAMP)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int old, int n) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE);
        onCreate(db);
    }

    boolean insert(String name, String salary) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("name", name); // Lưu nguyên giá trị, có thể có space
        cv.put("salary", salary);
        db.insert(TABLE, null, cv);
        return true;
    }

    // TRIM(name) loại bỏ space đầu/cuối khi SELECT
    ArrayList<String> getAllContacts() {
        ArrayList<String> list = new ArrayList<>();
        SQLiteDatabase db = getReadableDatabase();
        Cursor c = db.rawQuery(
            "SELECT (id || ' : ' || TRIM(name) || ' : ' || salary || ' : ' || datetime) AS fullname " +
            "FROM " + TABLE + " ORDER BY RANDOM()", null);

        if (c.moveToFirst()) {
            do {
                list.add(c.getString(c.getColumnIndexOrThrow("fullname")));
            } while (c.moveToNext());
        }
        c.close();
        return list;
    }

    boolean update(String name, String salary) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("name", name);
        cv.put("salary", salary);
        db.update(TABLE, cv, "name=?", new String[]{name});
        return true;
    }

    boolean delete() {
        getWritableDatabase().delete(TABLE, null, null);
        return true;
    }
}

Kết quả

Nhập tên: " Nguyễn Văn A " (có space đầu/cuối). Khi hiển thị ListView, tên sẽ hiện "Nguyễn Văn A" nhờ TRIM(name) trong truy vấn.

Các biến thể của TRIM

  • TRIM(column) - xóa space 2 đầu (mặc định).
  • LTRIM(column) - chỉ xóa space đầu.
  • RTRIM(column) - chỉ xóa space cuối.
  • TRIM(column, 'xyz') - xóa các ký tự 'x', 'y', 'z' ở 2 đầu.

Lời khuyên

Nên trim() ở tầng Java (name.getText().toString().trim()) trước khi lưu để dữ liệu trong DB sạch. Dùng TRIM() trong SQL khi phải xử lý dữ liệu cũ đã bẩn.