Sqlite 选择*。。。式中,col=";“字符串”;返回无效行

Sqlite 选择*。。。式中,col=";“字符串”;返回无效行,sqlite,Sqlite,我得到一个混乱的选择…结果,表定义是: CREATE TABLE modes ( key INTEGER, mode INTEGER, channel INTEGER, name TEXT, short_name TEXT, def INTEGER, highlight INTEGER,

我得到一个混乱的选择…结果,表定义是:

CREATE TABLE modes (
               key INTEGER,
               mode INTEGER,
               channel INTEGER,
               name TEXT,
               short_name TEXT,
               def INTEGER,
               highlight INTEGER,
               catagory TEXT,
               subcatagory TEXT);
它包含以下内容:

sqlite> select * from modes;
  3|6|5|Green|G|0|255|a|b
  3|6|6|Blue|B|0|255|a|b
  3|9|1|Mode|Mode|0|255|a|b
  3|9|2|Auto Mode Speed|Speed|0|255|a|b
  3|9|3|Strobe|Strobe|0|255|a|b
  3|9|4|Red|R|0|255|a|b
  3|9|5|Green|G|0|255|a|b
  3|9|6|Blue|B|0|255|a|b
  3|9|7|Red2|R2|0|255|a|b
  3|9|8|Green2|G2|0|255|a|b
  3|9|9|Blue2|B2|0|255|a|b
  3|6|4|Red|R|0|255|a|b
  3|6|1|6|6|0|255|a|b
  3|6|2|Auto mode speed|speed|0|255|a|b
  3|6|3|Strobe|Strobe|0|255|strobe|b
请注意底部第3行: 3 | 6 | 1 | 6 | 6 | 0 | 255 | a | b

如果我做了选择:
从mode=6和name=“mode”按频道排序的模式中选择*

它返回:
3 | 6 | 1 | 6 | 6 | 0 | 255 | a | b


第4列和第5列(名称和短名称)不应匹配,它们是6,匹配项是“Mode”。如果我将匹配字符串“Mode”更改为任何其他字符串,它将按预期工作。“Mode”是保留字吗?还是我不知何故将变量“Mode”设置为6?。我不理解这种行为。

我对sqlite3不熟悉,但我想说,在我看来,您正在执行name=“Mode”,它获取modes.Mode对象并检查它


如果您执行
操作,请从模式中选择*,其中name=“Mode”按频道订购。您可能会发现,它也会给您提供
3 | 6 | 1 | 6 | 6 | 0 | 255 | a | b

我对sqlite3并不熟悉,但我想说,在我看来,您正在执行name=“Mode”,它正在获取modes.Mode对象并检查它

如果您执行
操作,请从模式中选择*,其中name=“Mode”按频道订购。你可能会发现它只会给你
3 | 6 | 1 | 6 | 6 | 0 | 255 | a | b

如果你使用[“]它意味着列,那么当你这样做的时候

name="Mode"
这意味着您在与列模式具有相同值的列名中搜索。因此,您可以在代码中实际选择Mode=6和name=6的位置。 如果要使用字符串,请使用[']而不是[']

我试图在我的数据库中使用该代码

select * from products
where name="Mode"
我犯了个错误

ERROR:  column "Mode" does not exist
LINE 2: where name="Mode"
如果您使用[“],它表示列,那么当您使用

name="Mode"
这意味着您在与列模式具有相同值的列名中搜索。因此,您可以在代码中实际选择Mode=6和name=6的位置。 如果要使用字符串,请使用[']而不是[']

我试图在我的数据库中使用该代码

select * from products
where name="Mode"
我犯了个错误

ERROR:  column "Mode" does not exist
LINE 2: where name="Mode"

我终于在文件里找到了,如果有人在找的话。
它在

我终于在文档中找到了,如果有人在看的话。
它在

中,如果您想用字符串给出一个条件,请尝试使用LIKE或else,而不是[=]。谢谢您,这一更改使它的行为符合预期。我在文档中找到了单引号,我仍在寻找双引号。我试图投票支持你,但我的声誉还不够好。如果你想用string给出一个条件,请尝试使用LIKE或else,而不是[=]。谢谢你,这一更改使它按预期运行。我在文档中找到了单引号,我仍在寻找双引号。我想投票支持你,但我的名声还不够好。