时间:2024-07-06 22:08
人气:
作者:admin
mORMot 的 Fast Format 到底是% 还是 ? 作为参数!,先看看关键代码。
下面是代码原始注释
function FormatSql(const Format: RawUtf8; const Args, Params: array of const): RawUtf8;
fast Format() function replacement, handling % but also ? inlined parameters
快速Format()函数替代,处理%和?内联参数
注:
function FormatJson(const Format: RawUtf8; const Args, Params: array of const): RawUtf8;
fast Format() function replacement, handling % but also ? parameters as JSON
快速Format()函数的替代品,处理%同时也处理?参数作为JSON
{$ifndef PUREMORMOT2}
// rather call FormatSql() and FormatJson() functions
// 更应该调用 FormatSql() and FormatJson() 使代码清晰
function FormatUtf8(const Format: RawUtf8; const Args, Params: array of const; JsonFormat: boolean = false): RawUtf8; overload;
{$endif PUREMORMOT2}
fast Format() function replacement, handling % and ? parameters
快速Format()函数替代,处理%和?参数
从下面两段示例可以看出他们的区别
procedure TForm1.Button1Click(Sender :TObject);
var
SearchPhrase :RawUtf8;
begin //sql 文字替换
SearchPhrase:='abcde' ;
Edit2.Caption := mormot.core.json.FormatUtf8(' % MATCH ? ORDER BY rank DESC ', ['SearchTable'], [SearchPhrase]); SearchPhrase:='abcde' ;
Edit1.Caption := mormot.core.json.FormatUtf8(' % MATCH ? ORDER BY rank DESC ', ['SearchTable'], [123]);
end;
procedure TForm1.Button2Click(Sender :TObject);
var
SearchPhrase :RawUtf8;
begin //json 文字替换
SearchPhrase:='abcde' ;
Edit2.Caption := mormot.core.json.FormatUtf8(' % MATCH ? ORDER BY rank DESC ', ['SearchTable'], [SearchPhrase],True); SearchPhrase:='abcde' ;
Edit1.Caption := mormot.core.json.FormatUtf8(' % MATCH ? ORDER BY rank DESC ', ['SearchTable'], [123],True);
end;
上面的输出是:
SearchTable MATCH :('abcde'): ORDER BY rank DESC
SearchTable MATCH :(123): ORDER BY rank DESC
据说mormot 带上 :( ): 是为了优化数据查询,估计是内存中吧!这并不是数据库的特性。
下面的输出是:
SearchTable MATCH 123 ORDER BY rank DESC
SearchTable MATCH "abcde" ORDER BY rank DESC
IDE工具RAD Studio 13 Florence重磅发布:64 位