QSQLITE DB에서 regexp를 사용하려면,
커넥션 열 때 setConnectOptions("QSQLITE_ENABLE_REGEXP=1"); 을 설정해 주어야 한다.
bool DB::connectDatabase()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "connName");
db.setConnectOptions("ISC_DPB_LC_CTYPE=UTF-8");
db.setConnectOptions("QSQLITE_ENABLE_REGEXP=1");
db.setDatabaseName(":memory:");
if (!db.isValid())
{
qDebug() << "addDatabase failed.(db is not valid)";
return false;
}
if (!db.isOpen())
{
if (!db.open())
{
qDebug() << QString("DB Open Failed - connName : %1, dbname : %2").arg("connName").arg(":memory:");
QSqlDatabase::removeDatabase("connName");
return false;
}
}
return true;
}
데이터를 조회할 때는, 아래와 같이 사용한다.
한글로 시작하는 데이터 조회
SELECT * FROM tablename WHERE `columnName` REGEXP '^[ㄱ-ㅎ가-힣]';
영어로 시작하는 데이터 조회
SELECT * FROM tablename WHERE `columnName` REGEXP '^[a-zA-Z]';
숫자로 시작하는 데이터 조회
SELECT * FROM tablename WHERE `columnName` REGEXP '^[0-9]';
일본어로 시작하는 데이터 조회
SELECT * FROM tablename WHERE `columnName` REGEXP '^[ぁ-んァ-ヶー一-龠]' ;
중국어로 시작하는 데이터 조회
SELECT * FROM tablename WHERE `columnName` REGEXP '^[一-龥]';
샘플 코드
void DB::select() {
QSqlDatabase DB = QSqlDatabase::database("connName");
QSqlQuery sql(DB);
QString query = "SELECT * FROM tablename WHERE `subject` REGEXP '^[ㄱ-ㅎ가-힣]'";
bool re = sql.exec(query);
while (sql.next()) {
qDebug() << sql.value(0).toString();
}
}
'개발 > Qt' 카테고리의 다른 글
[Qt] moc(Meta Object Compiler)이란 (0) | 2023.07.16 |
---|---|
[QTest] Cmake로 QTest 빌드 중 error LNK2019: unresolved external symbol _main 오류 (0) | 2023.07.12 |
[Qt] 디렉토리가 비어있는지 체크, 디렉토리 안 파일 개수 세기 (0) | 2022.06.14 |
[Qt] 파일에서 읽기 전용(Read Only) 속성 제거하기 (0) | 2022.03.04 |
[Qt] QPushButton의 background color 설정하기/가져오기 (0) | 2022.02.21 |