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

Sử dụng RTRIM() trong SQLite Android

Hàm RTRIM() - Xóa khoảng trắng bên phải

RTRIM(string) loại bỏ tất cả khoảng trắng (space, tab, newline) ở cuối chuỗi. Có overload RTRIM(string, chars) xóa các ký tự chỉ định.

DatabaseHelper.java

public ArrayList<String> getAllContacts() {
    ArrayList<String> list = new ArrayList<>();
    SQLiteDatabase db = getReadableDatabase();
    
    // rtrim(name) xóa space cuối tên, ghép với salary
    Cursor cursor = db.rawQuery(
        "SELECT RTRIM(name) || ' : ' || salary as fullname FROM " + TABLE_NAME, null);

    if (cursor.moveToFirst()) {
        do {
            list.add(cursor.getString(0));
        } while (cursor.moveToNext());
    }
    cursor.close();
    return list;
}

Demo: Insert tên có space cuối

public boolean insert(String name, String salary) {
    SQLiteDatabase db = getWritableDatabase();
    ContentValues values = new ContentValues();
    // Thêm space cuối để test RTRIM
    values.put("name", name + "   "); // "Sairam   "
    values.put("salary", salary.getBytes());
    return db.insert(TABLE_NAME, null, values) != -1;
}

Kết quả

Sử dụng RTRIM() trong SQLite Android

Trước RTRIM: "Sairam : 50000" → Sau RTRIM: "Sairam : 50000" (space cuối đã xóa).

Các hàm TRIM liên quan

HàmMô tảVí dụKết quả
TRIM(X)Xóa space đầu VÀ cuốiTRIM(' abc ')'abc'
LTRIM(X)Xóa space ĐẦULTRIM(' abc')'abc'
RTRIM(X)Xóa space CUỐIRTRIM('abc ')'abc'
TRIM(X, Y)Xóa ký tự Y ở đầu/cuốiTRIM('xyabcxy', 'xy')'abc'
LTRIM(X, Y)Xóa ký tự Y ở đầuLTRIM('xyabc', 'xy')'abc'
RTRIM(X, Y)Xóa ký tự Y ở cuốiRTRIM('abcxy', 'xy')'abc'

Ứng dụng thực tế

  • Làm sạch dữ liệu nhập từ user (thường có space thừa).
  • Chuẩn hóa trước khi so sánh: WHERE RTRIM(name) = RTRIM(input).
  • Xóa ký tự đặc biệt: RTRIM(path, '/') bỏ slash cuối đường dẫn.
  • Kết hợp: TRIM(REPLACE(name, '\t', ' ')) xử lý tab + space.

Lưu ý hiệu năng

  • Hàm TRIM/RTRIM/LTRIM chạy trên từng row → chậm trên bảng lớn.
  • Nên làm sạch dữ liệu lúc INSERT (Java: string.trim()) thay vì lúc QUERY.
  • Index không hoạt động với WHERE RTRIM(col) = 'value' → cân nhắc computed column hoặc trigger.