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.