Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为SQLite中的值使用变量?_Sqlite_Variables - Fatal编程技术网

如何为SQLite中的值使用变量?

如何为SQLite中的值使用变量?,sqlite,variables,Sqlite,Variables,我正在尝试将变量合并到查询中,以使其更易于管理。我遵循中概述的指导方针,并尝试实施这些指导方针 我正在使用SQLite来实现这一点,所以我被它的局限性所困扰,但看起来有些人已经找到了一些解决办法。以下查询成功运行,但不返回任何记录。如果我分别用“John”和“Smith”替换WHERE子句中的变量名,查询将返回1条记录,但如果我使用我创建的变量名,则返回0条记录。删除变量周围的引号并不能使其正常工作 CREATE TEMP TABLE IF NOT EXISTS _Variables (Name

我正在尝试将变量合并到查询中,以使其更易于管理。我遵循中概述的指导方针,并尝试实施这些指导方针

我正在使用SQLite来实现这一点,所以我被它的局限性所困扰,但看起来有些人已经找到了一些解决办法。以下查询成功运行,但不返回任何记录。如果我分别用“John”和“Smith”替换WHERE子句中的变量名,查询将返回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子句没有正确地引用我创建的变量。正确的称呼方式是什么?按照上面链接的答案做似乎对我不起作用


注释掉
;删除表变量不会更改结果。

您应该能够从设置的表中选择变量:

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');