Вы можете фильтровать (заменить ничем) при извлечении данных с использованием SQL.
например. такой запрос может быть: -
SELECT replace(replace(col1,'''',''),'"','') FROM cpluspluscode;
- , где соответствующий столбец col1 , а таблица cpluspluscode .
Ниже приведен пример, показывающий, как это работает: -
DROP TABLE IF EXISTS cpluspluscode;
CREATE TABLE IF NOT EXISTS cpluspluscode (col1 TEXT);
INSERT INTO cpluspluscode VALUES('''mytext'' "other text"');
SELECT * FROM cpluspluscode;
SELECT replace(replace(col1,'''',''),'"','') AS filtered FROM cpluspluscode;
Результаты вышесказанного: -
Без фильтрации: -

Отфильтровано: -

Unicode
Если вы хотите, чтобы сделать выше, используя Unicode, то вы можете использовать: -
SELECT replace(replace(col1,char(0034),''),char(39),'') AS filtered FROM cpluspluscode;
- При этом используется основная функция SQLite char (см. Ссылку выше).
- Основная функция unicode может использоваться для поиска Unicode для символа (снова см. Ссылку выше).
Пример Android
Предполагается, что подкласс SQLiteOpenHelper DatabaseHelper , и это создает таблицу в соответствии с: -
public static final String TABLE_CPLUSPLUSCODE = "cpluspluscode";
public static final String COLUMN1 = "col1";
.........
@Override
public void onCreate(SQLiteDatabase db) {
String crtcpp = "CREATE TABLE IF NOT EXISTS " + TABLE_CPLUSPLUSCODE + "(" +
COLUMN1 + " TEXT" +
")";
db.execSQL(crtcpp);
}
И DatabaseHelper включает методы: -
public long cppInsert(String value) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(COLUMN1,value);
return db.insert(TABLE_CPLUSPLUSCODE,null,cv);
}
public Cursor getFiltered() {
SQLiteDatabase db = this.getWritableDatabase();
String[] columns = new String[]{"replace(replace(" + COLUMN1 + ",'''',''),'\"','') AS " + COLUMN1};
return db.query(TABLE_CPLUSPLUSCODE,columns,null,null,null,null,null);
}
public Cursor getUnfiltered() {
SQLiteDatabase db = this.getWritableDatabase();
return db.query(TABLE_CPLUSPLUSCODE,null,null,null,null, null, null);
}
Затем используйте следующее (в упражнении): -
DatabaseHelper mDBHlp = new DatabaseHelper(this);
mDBHlp.cppInsert("''mydata'' \" other data\"");
Cursor csr1 = mDBHlp.getUnfiltered();
while (csr1.moveToNext()) {
Log.d("CSR1DATA",csr1.getString(csr1.getColumnIndex(DatabaseHelper.COLUMN1)));
}
csr1.close();
Cursor csr2 = mDBHlp.getFiltered();
while (csr2.moveToNext()) {
Log.d("CSR2DATA",csr2.getString(csr2.getColumnIndex(DatabaseHelper.COLUMN1)));
}
Результаты: -
09-05 04:39:14.003 3471-3471/so52115977.so52115977 D/CSR1DATA: ''mydata'' " other data"
09-05 04:39:14.003 3471-3471/so52115977.so52115977 D/CSR2DATA: mydata other data
т.е. вторая строка фильтруется соответственно.