C'è la tabella denominata Students
. Voglio estrarre i nomi degli studenti il cui nome inizia con "n" o "p" o "y". So che in TSQL (server MS SQL) posso scrivere la query come segue e funziona:LIKE 'Sintassi' [charlist]% 'non funziona in MySQL (phpMyAdmin)
SELECT * FROM Students WHERE StudentName LIKE '[npy]%'
Ma quando eseguo la stessa query in MySQL (phpMyAdmin) non sono riuscito a recuperare il corretto set di risultati. Ho provato a convertire le lettere del nome dello studente nello stesso caso menzionato nella charlist. Ho fatto un po 'di ricerca su google e ho scoperto che in MySQL abbiamo bisogno di specificarlo come espressione regolare. Ho eseguito la query sottostante e ho ottenuto il risultato previsto.
SELECT * FROM Students WHERE StudentName REGEXP '[[:<:]]n | [[:<:]]p | [[:<:]]y'
voglio sapere il motivo per cui LIKE '[charlist]%'
sintassi non funziona con MySQL. È dovuto all'implementazione in MySQL (MySQL non supporta la sintassi) o qualcosa di sbagliato nella versione phpmyadmin che sto usando?
Qualsiasi aiuto in merito è molto apprezzato. Grazie :)
'LIKE '[charlist]%'' è come cercare una stringa che inizia con '[charlist]'. Per la tua domanda, devi ripetere l'istruzione 'LIKE' per ogni carattere. –
'LIKE' (in MySQL) non usa espressioni regolari. Ha caratteri jolly. "%" significa "0 o più caratteri" e "_" significa "un carattere." Se vuoi usare un'espressione regolare, devi usare "REGEXP" (o "RLIKE"). Prova "StudentName REGEXP"^[npy ]. * ''. –
MySQL non ha la sintassi dei jolly in LIKE, per quanto ne so solo SQL Server e Sybase/SQL Anywhere. –