Cú pháp SUBSTR()
SUBSTR(string, start, length) trích xuất chuỗi con từ start (bắt đầu từ 1) với độ dài length. Nếu bỏ length, lấy đến hết chuỗi.
Ví dụ: Lấy 2 ký tự đầu của tên
DatabaseHelper.java - Phần quan trọng
package com.example.substrdemo;
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);
cv.put("salary", salary);
db.insert(TABLE, null, cv);
return true;
}
// SUBSTR(name, 1, 2) lấy 2 ký tự đầu tiên
ArrayList<String> getAllContacts() {
ArrayList<String> list = new ArrayList<>();
SQLiteDatabase db = getReadableDatabase();
Cursor c = db.rawQuery(
"SELECT SUBSTR(name, 1, 2) AS fullname FROM " + TABLE, 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: "sairamkrishna" → ListView hiển thị: "sa" (2 ký tự đầu).
Ứng dụng thực tế
- Tạo viết tắt:
SUBSTR(name, 1, 1) || '. ' || SUBSTR(surname, 1, 1) - Lấy năm từ chuỗi ngày:
SUBSTR(date_col, 1, 4) - Masking dữ liệu nhạy cảm:
SUBSTR(card, -4)(4 số cuối)
Lưu ý
- SQLite đánh chỉ số từ 1 (khác Java/Python từ 0).
startâm: tính từ cuối chuỗi (-1 là ký tự cuối).- Kết hợp với
UPPER()/LOWER()để chuẩn hóa.