Нет. В SQLite по умолчанию оператор
REGEXP есть, но он ничего хорошего не делает, если не зарегистрировать собственную функцию
regexp()The REGEXP operator is a special syntax for the regexp() user function. No regexp() user function is defined by default and so use of the REGEXP operator will normally result in an error message. If a application-defined SQL function named "regexp" is added at run-time, that function will be called in order to implement the REGEXP operator.
Функция может выглядеть например так:
C++ (Qt)
void sqlregexp(sqlite3_context* ctx, int argc, sqlite3_value** argv)
{
QRegExp regex;
QString arg0((const char*)sqlite3_value_text(argv[0]));
QString arg1((const char*)sqlite3_value_text(argv[1]));
regex.setPattern(arg0);
regex.setCaseSensitivity(Qt::CaseInsensitive);
if(arg1.contains(regex))
sqlite3_result_int(ctx, 1);
else
sqlite3_result_int(ctx, 0);
}
Регистрируется так:
C++ (Qt)
sqlite3_create_function(handle, "regexp", 2, SQLITE_UTF8, NULL, &sqlregexp, NULL, NULL);
Где
handle - база данных SQLite (тип
sqlite3 *) - значение, возвращаемое
QSqlDriver::handle()Наверное, наиболее правильным способом будет вставить реализацию этой функции (и её регистрацию) в драйвер SQLite, как например
тут и пересобрать его.