如何将具有多个值的 WHERE IN 子句转换为 RegExp 或 Like

How to convert WHERE IN clause with multiple values to RegExp or Like

我想转换这个:

SELECT id,songTitle,artistName, trackId
FROM songs
WHERE (songTitle, artistName) IN (('come together', 'the beatles'),('all the small things', 'blink-182'))

类似这样但我不知道正确的语法:

SELECT id,songTitle,artistName, trackId
FROM songs
WHERE (songTitle, artistName) IN LIKE (('%come together%', '%the beatles%'),('%all the small things%', '%blink-182%'))

除非我同时搜索 100 多首歌曲。我们也可以使用 REGEXP 我只是不知道其中任何一个的正确语法。

  • WHERE (a,b) IN ((1,2), ...) 优化很差。
  • LIKE 中的前导通配符阻止使用索引。
  • 你不能做你尝试的构造。

所以,抛开性能,让我们看看如何执行任务:

WHERE ( songTitle LIKE '%come together%' AND artistName LIKE '%the beatles%')
   OR ( .... )
   OR ...

抱歉,没有捷径。

REGEXP 无法提供帮助在这种情况下

FULLTEXT 索引是需要考虑的事情,但我认为它在这个例子中没有帮助。