2011-11-09 13 views

risposta

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

Qui % serve come un carattere jolly, quindi questo dovrebbe corrispondere righe con il stuff campo uguale a qualsiasi di itunes, itunesfoo, itunes1, ...

Maggiori informazioni: SQL LIKE Operator a W3Schools.

+4

Che cosa succede se invece di 'utilizzo segnaposto itunes'? È corretto? SELEZIONA ... DOVE cose piace? '%'; ' – user2118559

+2

Cosa comunica il segno%? – Skynet

+3

@Skynet,% è un carattere jolly che corrisponde a un numero arbitrario di caratteri (compresi i caratteri zero). Quindi l'esempio corrisponderebbe a itunesstore, itunesUsername e itunes. Documenti MySQL qui, è difficile cercare Google per%! https://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html – georgiecasey

7

aggiungere il simbolo di accento circonflesso, rappresenta l'inizio della stringa:

SELECT stuff REGEXP '^itunes' as is_itunes; 

Tuttavia, LIKE 'itunes%' come suggerito da Marc dovrebbe essere molto più veloce, soprattutto se gli indici siano impostati correttamente.

4

Per un campo indicizzato è molto meglio da fare:

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

Questo non creerà una scansione completa della tabella, e utilizzare l'indice.

+0

questa sembra la strada da percorrere per un prefisso di stringa noto. qualcun altro può commentare le prestazioni, specialmente con un grande tavolo? – aaronbauman

+0

sembra una reliquia lasciata da mysql v3.23 giorni quando tutto ciò che aveva era myisam –

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

un'altra anser senza alcuna spiegazione. –

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla recensione] (/ recensione/post di bassa qualità/18145859) – fredrik

Problemi correlati