我正在查询歌曲数据库,并且想要分离出包含歌曲“Tube”的行(它可能出现在它之前和之后的任意数量的字符,例如“Track 01. Tube -> Another song”),但不是匹配歌曲“First Tube”或“Last Tube”,它们也可能包含无关字符。
我一直在用这个查询做这个:
SELECT * FROM `songs` WHERE `song` LIKE ('%Tube%') and song not like ('%first%') and song not like ('%last%');
但更喜欢使用正则表达式,以便我可以在其他地方使用相同的匹配(比如在 PHP 代码中)。
我试过这样的事情:
SELECT * FROM songs WHERE song REGEXP '.*(first|last){0}.*(tube).*';
但它显然不起作用,它也匹配“First Tube”歌曲。