2014-01-15 31 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\",只能用REGEXP它的工作原理。

隨着REGEXP2我有一個錯誤,「近REGEXP2:語法錯誤」

爲什麼?

+1

'REGEXP'是一個運算符;你正在定義函數,所以它會是'WHERE REGEXP2(Images.Filename,「truc」)'......也許。這是一個猜測。 – Ryan

回答

2

REGEXP operator定義爲重定向到regexp用戶功能。

GLOB外,沒有其他操作符以這種方式定義。 如果你想調用其他函數,你必須稱它們爲函數:

SELECT ImageID FROM Images WHERE regexp('truc', Filename); 
SELECT ImageID FROM Images WHERE regexp2('truc', Filename);