【问题标题】:Exclude starting words from SELECT query从 SELECT 查询中排除起始词
【发布时间】:2010-12-19 21:03:58
【问题描述】:

我正在尝试制作电影列表。首先,我有一个查询,可以获取电影中的所有首字母:

SELECT DISTINCT LEFT(film_title, 1) FROM ms_films ORDER BY film_title

其次,我有一个查询选择所有以特定字母开头的电影:

SELECT * FROM ms_films WHERE film_title LIKE 'H%'

当然,很多电影都以“The”或荷兰语中的“De”开头。有什么办法可以从这两个查询中排除这些起始词?

基本上,像“接下来的三天”这样的电影应该在两个查询中归类到 N 之下。

【问题讨论】:

    标签: mysql select words


    【解决方案1】:

    您可以使用REPLACE 删除它们

    SELECT * FROM ms_films WHERE REPLACE(film_title, "The", "") LIKE 'H%'
    

    显然,这会删除所有出现的 The,但在您的情况下应该无关紧要。

    如果您需要更复杂的搜索模式,您还可以使用REGEXP(或其别名RLIKE)代替LIKE

    【讨论】:

    • 一个缺点:这个查询不会使用索引。
    【解决方案2】:

    如果这是您的应用程序中的常见任务,我建议引入一个 CHAR(1) 列,其中将存储标题的第一个(实际)字母。您可以在此列上创建一个索引,这将非常快,因为它只有一个字节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-26
      • 2020-01-13
      • 2019-11-24
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多