SQL中的SQLite并支持REGEXP
发布时间:2020-12-12 07:04:27 所属栏目:MsSql教程 来源:网络整理
导读:我在C中使用sqlite3,我想添加对REGEXP运算符的支持.默认情况下,用户定义的函数 regexp()不存在,调用REGEXP通常会导致错误(根据SQLite页面). 如何添加正则表达式函数以支持REGEXP?大概我会通过sqlite3_create_function调用来做到这一点,但我不知道应用程序定
我在C中使用sqlite3,我想添加对REGEXP运算符的支持.默认情况下,用户定义的函数
regexp()不存在,调用REGEXP通常会导致错误(根据SQLite页面).
>如何添加正则表达式函数以支持REGEXP?大概我会通过sqlite3_create_function调用来做到这一点,但我不知道应用程序定义的regexp()会是什么样子. 我无法使用Google或SQLite页面找到相关信息. 解决方法你也可以试试这个:#include <regex.h> … void sqlite_regexp(sqlite3_context* context,int argc,sqlite3_value** values) { int ret; regex_t regex; char* reg = (char*)sqlite3_value_text(values[0]); char* text = (char*)sqlite3_value_text(values[1]); if ( argc != 2 || reg == 0 || text == 0) { sqlite3_result_error(context,"SQL function regexp() called with invalid arguments.n",-1); return; } ret = regcomp(®ex,reg,REG_EXTENDED | REG_NOSUB); if ( ret != 0 ) { sqlite3_result_error(context,"error compiling regular expression",-1); return; } ret = regexec(®ex,text,NULL,0); regfree(®ex); sqlite3_result_int(context,(ret != REG_NOMATCH)); } … sqlite3_create_function(*db,"regexp",2,SQLITE_ANY,&sqlite_regexp,0) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |