FireDac SQLite默认是不支持正则,但可以写函数实现
TFDSQLiteFunction用来实现自定义函数
记得uses System.RegularExpressions;
FDSQLiteFunction1.DriverLink := FDPhysSQLiteDriverLink1;
FDSQLiteFunction1.FunctionName := 'myreg'; // 函数名
FDSQLiteFunction1.ArgumentsCount := 2; // 函数的参数个数
在Calculate事件里写正则代码
var txt,pattern:string; begin txt:=AInputs.Inputs[1].asstring; pattern:=AInputs.Inputs[0].asstring; AOutput.AsBoolean:=TRegEx.IsMatch(txt, pattern); end;
调用方式:
fdquery.open('select * from 表名 where myreg("正则表达式",需要查询的字段名)');
select type||'',name||'' from sqlite_master where myreg('^a.*',name)--a开头的