我正在查询歌曲数据库,并希望将包含歌曲“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'歌曲。
答案 0 :(得分:0)
如果你想在这里使用正则表达式,我想你可能会在这些方面更多地寻找正则表达式:
SELECT * FROM songs WHERE song REGEXP ".*Tube.*" and NOT REGEXP ".*first.*|.*last.*"
这与你上面的LIKE
陈述不远,但它会给你一个开始。