0

曲のデータベースに対してクエリを実行しており、曲「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」の曲にも一致します。

4

1 に答える 1

0

ここで正規表現を使用したい場合は、次の行に沿って正規表現を探している可能性があると思います。

SELECT * FROM songs WHERE song REGEXP ".*Tube.*" and NOT REGEXP ".*first.*|.*last.*"

LIKEこれは、上記のステートメントからそれほど遠くありませんが、出発点になります。

于 2013-01-15T03:52:05.500 に答える