【问题标题】:SQLite where clause acting strange with TEXT fieldsSQLite where 子句对 TEXT 字段表现奇怪
【发布时间】:2011-11-29 03:42:13
【问题描述】:

我在 sqlite.org 上下搜索过,但无法弄清楚这一点。我习惯了 MySQL,所以我想我可能忽略了一些东西。

见以下代码:

sqlite> select id,event_number,must_say from events where id=28;
28|'28'|'AFK'
sqlite> select id,event_number,must_say from events where must_say='AFK';
sqlite> select id,event_number,must_say from events where must_say like 'AFK';
sqlite> select id,event_number,must_say from events where must_say like 'A%';
sqlite> select id,event_number,must_say from events where must_say=='AFK';
sqlite>

不用说,我真的希望为上述所有查询返回以下内容,而不仅仅是第一个:

28|'28'|'AFK'

我在所有 TEXT 字段中都出现了这种行为。好像根本搜不到。

这是我的事件表的架构,省略了不相关的字段:

CREATE TABLE events (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    EVENT_NUMBER INTEGER,
    MUST_SAY TEXT
);

有什么想法吗?我只是希望能够通过表格中的任意文本字段进行搜索。

编辑:我正在使用 SQLite3。

【问题讨论】:

  • 它应该可以工作。尝试插入新行并执行查询。也试试like '%K%',也许你有不可打印的字符。
  • 你是对的。我在我的数据库中没有做足够的字符剥离。我可以以某种方式将您的评论提升为答案吗?
  • 我不这么认为,但您至少可以将评论标记为“很棒的评论”。我不知道我是否应该复制评论作为答案...
  • 我在另一个表/字段中仍然遇到问题。我正在删除输入中的所有不可打印字符。有没有办法在 SQLite 中查看不可打印的字符?

标签: sql database sqlite where-clause


【解决方案1】:

您的列中也可能有空格。

你可以看到空格

select '|' || must_say || '|' from events

您可以使用

查看不可打印的内容
select hex(must_say) from events

【讨论】:

  • 谢谢,这有帮助!问题是我使用单引号插入字符串并且没有意识到引号被插入到字段中。
  • 再解释一下就好了
猜你喜欢
  • 2019-06-09
  • 1970-01-01
  • 2014-11-03
  • 2017-03-29
  • 2014-10-22
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多