如何在SQLite中使用变量值?

时间:2018-04-20 11:30:49

标签: sqlite variables

我正在尝试将变量合并到查询中,以便更容易管理。我遵循this answer中列出的准则,并尝试实施它们。

我正在使用SQLite,所以我坚持其局限性,但看起来有些人已经有了一些工作方法。以下查询成功运行,但不返回任何记录。如果我将WHERE子句中的变量名分别替换为'John'和'Smith',则查询返回1条记录,但如果我使用我创建的变量名,则返回0条记录。删除变量周围的引号并不能使它工作。

CREATE TEMP TABLE IF NOT EXISTS _Variables (Name TEXT PRIMARY KEY, Value TEXT);
INSERT OR REPLACE INTO _Variables VALUES ('VarFirstName', 'John');
INSERT OR REPLACE INTO _Variables VALUES ('VarLastName', 'Smith');

SELECT LastName,FirstName,BirthYear,(strftime('%Y', date('now')) - BirthYear) AS Age,LocalExp,TotalExp,TotSalary,TotFringe,WorkLocationName,SchoolName
FROM DPISTAFF2008_2009
WHERE DPISTAFF2008_2009.FirstName = 'VarFirstName' AND DPISTAFF2008_2009.LastName = 'VarLastName'

;DROP TABLE _Variables;

我假设我的WHERE子句没有正确引用我创建的变量。打电话给他们的正确方法是什么?做上面所说的答案并不适合我。

评论;DROP TABLE _Variables;并不会改变结果。

1 个答案:

答案 0 :(得分:1)

您应该可以从您设置的表格中选择变量:

SELECT
    LastName,
    FirstName,
    BirthYear,
    (strftime('%Y', date('now')) - BirthYear) AS Age,
    LocalExp,TotalExp,TotSalary,TotFringe,WorkLocationName,SchoolName
FROM DPISTAFF2008_2009
WHERE
    DPISTAFF2008_2009.FirstName =
        (SELECT Value FROM _Variables WHERE Name = 'VarFirstName') AND
    DPISTAFF2008_2009.LastName =
        (SELECT Value FROM _Variables WHERE Name = 'VarLastName');