【问题标题】:SQLite query in populated table not returning anything?填充表中的 SQLite 查询不返回任何内容?
【发布时间】:2012-11-30 22:41:03
【问题描述】:

我在 sqlite 中创建了一个名为 AllWords.db 的数据库,其中包含所有英文单词的列表(计数:172820)。当我发出全选查询时,它会返回一个包含所有 172820 个单词的列表。另外,当我像这样打印表格单词的数量时:

SELECT COUNT(*) FROM words;

输出是 172820,所以数据库清楚地包含了所有的单词。但是,当我尝试检查一个单词是否存在(我唯一想要对这个数据库做的事情)时,它不会打印任何东西:

SELECT * FROM words WHERE word="stuff";

什么都不返回。

数据库是一个表,唯一的列是“单词”,所有单词都作为行。任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 我认为你确定“stuff”是数据库中的一个词?
  • 列的名称是word还是words
  • 如果我的问题的答案是肯定的,那么看看 [SELECT * FROM words WHERE word LIKE '%stuff%'] 是否返回任何内容。
  • 我确定“东西”就在那里,因为当我从单词中选择所有内容时它就在输出中。当我尝试使用 like 运算符时,它会返回一堆包含“stuff”的单词,包括“stuff”本身。尾随或前导空格会影响它吗?

标签: database sqlite


【解决方案1】:

为了确保您在数据库中使用了一个词,请查看您的表格

select * from words limit 10

房子
东西

...

然后选择您看到的单词之一

select * from words where word = 'stuff'

编辑:根据@MichaelEakins修复了where子句

Edit2:不幸的是,在这种情况下单引号和双引号没有区别,请参阅SQL Fiddle

【讨论】:

    【解决方案2】:

    回答我自己的问题,因为我知道出了什么问题。为了填充表格,我编写了一个 python 程序来将一个名为 words.txt 的文件(所有单词,由换行符分隔)解析为 sqlite。我的问题是查询变成了:

    INSERT INTO WORDS VALUES('englishWord\n')
    

    这弄乱了数据库。我解决了这个问题,它开始工作了,感谢@ScoPi 提供的使用 LIKE 的提示,它帮助我弄清楚有一个流浪的换行符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-14
      • 2021-04-24
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多