如何在 Adob​​e Air 中的 LIKE 运算符模式内使用命名参数

use*_*172 3 database air sqlite adobe

我想在 LIKE 运算符模式内使用命名参数占位符,以便正确转义参数字符串。

这是我修改后的代码,其中我使用了 at-param 占位符:

var stmt = new air.SQLStatement();

stmt.text = "SELECT * FROM comments WHERE title LIKE '%@search%';";

stmt.parameters["@search"] = "参数字符串";

stmt.execute();

这样做会产生一个包含以下详细信息的 SQLError

消息:错误#3315:SQL 错误。

详细信息:“@search”参数名称在参数属性中找到,但不在指定的 SQL 中

根据迈克·佩蒂的建议,我尝试了:

stmt.text = 'SELECT * FROM comments WHERE title LIKE "@%search%";';

这会产生相同的 SQL 错误详细信息。

文档有这样的:

expr ::= (列名 | expr) LIKE 模式

模式 ::= '[ 字符串 | % | _ ]'

我怀疑它由于引用而被跳过,关于如何使其工作的任何想法?

use*_*172 5

找到了一个解决方案,基本上不是这样做:

var stmt = new air.SQLStatement();
stmt.text = "SELECT * FROM comments WHERE title LIKE '%@search%';";
stmt.parameters["@search"] = "argument string";
stmt.execute();
Run Code Online (Sandbox Code Playgroud)

您必须为整个 LIKE 运算符模式放置一个占位符,并将该模式​​绑定为参数。

var stmt = new air.SQLStatement();
stmt.text = "SELECT * FROM comments WHERE title LIKE @search;";
stmt.parameters["@search"] = "%" + userInput + "%";
stmt.execute();
Run Code Online (Sandbox Code Playgroud)