2014-01-15 3 views
0

나는이 개 기능을 정의REGEXP2가 SQLite에서 구문 오류를 발생시키는 이유는 무엇입니까?

sqlite3_create_function(m_db.db(), "regexp", 2, SQLITE_UTF8, NULL, mysqlite_regexp, NULL, NULL); 
sqlite3_create_function(m_db.db(), "regexp2", 2, SQLITE_UTF8, NULL, mysqlite_regexp2, NULL, NULL) ; 

을 그리고 난 SELECT Images.ImageID FROM Images WHERE Images.Filename REGEXP \"truc\" 같은 쿼리를 만든 경우에만 정규 표현식와 그것을 작동합니다. REGEXP2와

나는 오류, 있다 "근처 REGEXP2 : 구문 오류"

이유는 무엇입니까?

+1

'REGEXP'는 연산자입니다. 당신은 함수들을 정의하고있다. 그래서 그것은'WHERE REGEXP2 (Images.Filename, "truc")'... 일 것이다. 그것은 추측입니다. – Ryan

답변

2

REGEXP operatorregexp 사용자 기능으로 리디렉션되도록 정의됩니다.

GLOB을 제외하고 다른 연산자는이 방법으로 정의되지 않습니다. 다른 함수를 호출하려면 함수로 호출해야합니다.

SELECT ImageID FROM Images WHERE regexp('truc', Filename); 
SELECT ImageID FROM Images WHERE regexp2('truc', Filename); 
관련 문제