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

Sử dụng hàm UPPER() trong SQLite Android

Hàm UPPER() và LOWER()

SQLite cung cấp UPPER() chuyển chữ thường → HOA, LOWER() chuyển HOA → thường. Hữu ích cho tìm kiếm không phân biệt chữ hoa/thường.

DatabaseHelper.java

@Override
public void onCreate(SQLiteDatabase db) {
    // Cột salary đổi thành FLOAT để minh họa
    db.execSQL("CREATE TABLE " + TABLE_NAME + 
        "(id INTEGER PRIMARY KEY AUTOINCREMENT, " +
        "name TEXT, " +
        "salary REAL, " +
        "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");
}

public ArrayList<String> getAllContacts() {
    ArrayList<String> list = new ArrayList<>();
    SQLiteDatabase db = getReadableDatabase();
    
    // Chỉ lấy name viết HOA
    Cursor cursor = db.rawQuery(
        "SELECT UPPER(name) as upper_name FROM " + TABLE_NAME, null);

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

Tìm kiếm không phân biệt hoa/thường (Case-insensitive)

-- Cách 1: Dùng UPPER/LOWER
SELECT * FROM table WHERE UPPER(name) = UPPER('search_term');

-- Cách 2: COLLATE NOCASE (khuyên dùng, nhanh hơn)
SELECT * FROM table WHERE name = 'search_term' COLLATE NOCASE;

-- Cách 3: Tạo index NOCASE
CREATE INDEX idx_name_nocase ON table(name COLLATE NOCASE);

Kết quả

Sử dụng hàm UPPER() trong SQLite Android

Nhập "sairam" → hiển thị "SAIRAM" nhờ UPPER().

Các hàm chuỗi hữu ích khác

HàmVí dụKết quả
UPPER()UPPER('abc')ABC
LOWER()LOWER('ABC')abc
TRIM()TRIM(' abc ')abc
LTRIM()LTRIM(' abc')abc
RTRIM()RTRIM('abc ')abc
SUBSTR()SUBSTR('abcdef', 2, 3)bcd
LENGTH()LENGTH('abc')3
REPLACE()REPLACE('abc', 'a', 'x')xbc