2011-11-09 15 views

答えて

73
ここ
SELECT ... WHERE stuff LIKE 'itunes%'; 

%ワイルドカード文字として機能しますので、これはitunesのいずれかに等しいstuffフィールドを持つ行にマッチする、itunesfooitunes1、...

さらに詳しい情報:W3SchoolsのSQL LIKE Operator

+4

何の代わりに 'itunes'使用プレースホルダの場合は?これは正しいですか?SELECT ... WHERE stuff LIKE? '%'; ' – user2118559

+2

%記号は何を伝えますか? – Skynet

+3

@Skynet、%は、任意の数の文字(ゼロ文字を含む)に一致するワイルドカードです。つまり、この例はitun​​esstore、itunesUsername、itunesと一致します。 ここにMySQLのドキュメントがありますが、%Googleの検索は難しいです! https://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html – georgiecasey

7

がキャレット記号を追加し、それは文字列の先頭を表します

SELECT stuff REGEXP '^itunes' as is_itunes; 

しかし、マルクにより示唆されるようLIKE 'itunes%'はあなたのインデックスが正しく設定されている場合は特に、はるかに高速でなければなりません。

4

インデックスフィールドのためにそれを行うためにはるかに優れている:

select ... where stuff >='itunes' AND stuff < 'itunet'

これは、全表スキャンを作成し、インデックスを使用しません。

+0

これは、既知の文字列接頭辞に行く方法のようです。他の誰かが大きなテーブルを使ってパフォーマンスにコメントすることはできますか? – aaronbauman

+0

これはmysql v3.23から残った遺物のように見えますが、すべてがmyisam –

2
SELECT ... WHERE LEFT(stuff, 6) = 'itunes'; 
0
SELECT ... WHERE stuff REGEXP '[[:<:]]itunes'; 
+0

という説明が全くない別のアンサーでした。 –

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューより](/レビュー/低品質の投稿/ 18145859) – fredrik

関連する問題