SQLite模糊查询一个单词的语句是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLite模糊查询一个单词的语句是啥?相关的知识,希望对你有一定的参考价值。

比如我要在表words的eng列里查询有没有chi这个词,chi有可能是一个词组中的一个词,比如chi hi,或者hi chi,又或者hi chi hi,我想要查询结果中可以出现这三个词组和chi,但是却不会出现chinese这样包含chi三个字母的其他词,这要怎么做?

关键就是chi前面或者后面有空格。
select * from words where eng like '%chi %' or eng like '% chi%'
注意期中的空格
参考技术A 可以使用 like 与 or 语句实现。下面是SQL语句
select * from words where eng like '% chi%' or eng like '%chi %';
--关键的是chi前后的空格
参考技术B 只能用正则匹配法。

sqlite中多个JOIN语句的优先级是啥?

【中文标题】sqlite中多个JOIN语句的优先级是啥?【英文标题】:What is the precedence of multiple JOIN statements in sqlite?sqlite中多个JOIN语句的优先级是什么? 【发布时间】:2010-10-23 16:50:40 【问题描述】:

令我惊讶的是,以下两个查询返回了不同的结果:

SELECT *
  FROM foo
       JOIN bar
         ON bar.id=foo.bar_id

       JOIN baz
         ON baz.id=foo.baz_id

       LEFT JOIN zig
         ON zig.foo_id=foo.id;

和:

SELECT *
  FROM foo
       LEFT JOIN zig
         ON zig.foo_id=foo.id

       JOIN bar
         ON bar.id=foo.bar_id

       JOIN baz
         ON baz.id=foo.baz_id;

我想你在zigLEFT JOIN 应该没关系,因为在加入barbaz 时我没有使用zig 的列。但是,似乎在后者中,barbazJOIN-ing 吞噬了 zig 具有 null 值的行...这是为什么呢?

【问题讨论】:

我开始怀疑这是对我的问题的不准确简化 - 这两个查询确实应该是相同的,我正在做其他事情。 【参考方案1】:

这些是不同的,因为您的左连接在语句中的位置。请记住,联接不仅针对您要比较字段的两个表,还包括您在该点和下一个表之前联接的所有内容。

因此,在第一个语句中,您将在第一次连接中从 foo 中过滤掉行(那些没有 bar_id = bar.id 的行)

但在第二个语句中,您将所有 foo 包含在左连接中。

这比我开始写这篇文章时的预期更难表达,如果对你有意义,请告诉我。

【讨论】:

但是,即使在第二个语句中,我将所有 foo 与第一个左连接包括在内,不应该在后者中过滤掉相同的行(没有 bar_id 的行)加入?【参考方案2】:

这很好用。我错了。

【讨论】:

以上是关于SQLite模糊查询一个单词的语句是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Sqlite模糊查询通配符%和下划线无法匹配问题

Sqlite模糊查询通配符%和下划线无法匹配问题

IOS开发数据库篇—SQLite模糊查询

Lucene/kibana查询 语法

sqlite模糊查询

sqlite 多参数的模糊查询怎么做