Mysql SELECT 查询名称忽略第一个单词,如果它是 "the", "a", "an"等

标签 mysql regex select

我一直在尝试(没有成功)构造一个 MYSQL 查询,该查询将选择一组具有以单个字母字符开头的“标题”字段但忽略第一个单词(如果是“The”、“An”)的记录或“A”。我已经找到了很多针对查询的 ORDER BY 部分执行此操作的示例,但这是我需要执行此操作的初始 WHERE 部分,因为如果未找到正确的记录,则顺序无关紧要。使用

WHERE title LIKE "R%"

只会给我以这个作为第一个字母的标题(例如“Robin Hood”),但不会与“The Red House”匹配。我想我需要某种 REGEX,但我似乎无法让它工作。

例如,给定以下电影片名,

道路之家

王者归来

妈妈咪呀

阿尔戈

泰坦尼克号

一条河流穿过它

选择以“R”开头的电影片名将返回以下内容:

王者归来

一条河流穿过它

客栈

(其他字段省略)

最佳答案

最简单的方法是以编程方式将查询扩展为类似

SELECT
...
WHERE
  title LIKE 'R%'
  OR title LIKE 'The R%'
  OR title LIKE 'A R%'
  OR title LIKE 'An R%'
  ...

这应该比 REGEX 表现更好,因为它将能够使用索引,而 REGEX 永远不会。

顺便说一句:执行此操作的规范方法是将文章存储在单独的字段中。

关于Mysql SELECT 查询名称忽略第一个单词,如果它是 "the", "a", "an"等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14517984/

相关文章:

python - 两个字符串之间的正则表达式匹配python

javascript - 如何确保正则表达式不匹配空字符串?

java - Selenium WebDriver Java - Selenium 在 "select"中找到所需的选项,但没有单击它

MYSQL多表选择查询

php - 从 PHP MySQL 列中的所有行读取数据

mysql - 错误 1364 : 1364: Field 'ssl_cipher' doesn't have a default value

MySQL : Need to short a query

php - 使用正则表达式从 HTML 页面中提取 JSON (PHP)

mysql - SQL 多重选择和分组依据

MySQL MONTHNAME() 来自数字