如何从 SQLite 中设置参数?

How to set parameters from within SQLite?

我一直无法弄清楚如何在 SQLite 中设置参数。我主要将它用于测试,并且正在设计我的代码,以便它可以尽可能容易地移植到另一个尚未确定的 SQL 版本。通常,我使用命名参数,在内部测试查询时,我会使用语法 @varname="value"。我将在下面提供两个示例,展示我在测试时希望如何使用参数。

第一个示例只是设置并显示一个变量。

@string="Example String";
SELECT @string;

这应该是 return 变量的内容,在本例中:example string.

在第二个示例中,参数用作条件的一部分:

@param=Dark;
SELECT Title from table;
WHERE Title= '%' || @param || '%';

这应该 return 结果如下:

Afterdark    
Alone in the Dark
The Darkness

等等

SQLite 是一个嵌入式数据库,旨在与 'real' 编程语言一起使用。

设置参数值的唯一方法是从外部SQL。

下面的 SQLite 脚本将给出所需的输出:

BEGIN;

    CREATE TEMP TABLE _Titles(Title TEXT);

    /* Declaring a variable */
    INSERT INTO _Titles(Title) VALUES ('dark');

    /* Getting variable value (use within expression) */
    SELECT Title FROM TitleTable WHERE Title like ( '%' || (SELECT Title FROM _Titles WHERE Title = 'dark' LIMIT 1) || '%');

    DROP TABLE _Titles;
END;

请参考:Declare variable in sqlite and use it

可以使用 CTE 在 SQLite 中定义用户定义的变量:

示例 1

WITH vars as (SELECT "Example String" as string)
SELECT vars.string FROM vars;

示例 2

WITH vars as (SELECT "Dark" as param)
SELECT Title from [table], vars
WHERE Title LIKE '%' || vars.param || '%';

另见