2010-08-12 16 views

risposta

68

SELECT LEFT(field1,LOCATE(' ',field1) - 1)

Si noti che se la stringa in questione non contiene gli spazi, questo restituirà una stringa vuota.

+6

+1 non sapeva di 'SINISTRA' – soulmerge

+4

Torna 'chara' con lo spazio finale. È necessario ridurre il risultato di LOCATE se non è necessario separatore alla fine: SELECT LEFT (campo1, LOCATE ('', campo1) - 1) – Enyby

+0

Questo non funzionerà se il campo principale non contiene spazio. La sottostringa restituirà un valore vuoto invece di restituire una stringa intera. E.g. se il mio campo contiene stringa "test-possible-nome-errato" la sottostringa non restituirà nulla invece di "test-possible-nome-errato". –

10

Per questo è necessario un minimo di string operations. Supponendo che ogni campo ha almeno un carattere di spazio:

SELECT SUBSTR(field1, 0, LOCATE(' ', field1)) FROM your_table; 

approccio sicuro:

SELECT IF(
    LOCATE(' ', field1), 
    SUBSTR(field1, 0, LOCATE(' ', field1)), 
    field1 
) FROM your_table; 
+0

+1 per la versione sicura, sebbene non sia chiaro quale risultato debba essere restituito quando il campo non contiene uno spazio vuoto. – Mchl

+1

ha dovuto modificare 0 per 1: 'SELECT SUBSTR (campo1, 1, LOCATE ('', campo1)) FROM your_table;' –

45

Di seguito è riportato un altro metodo che funziona e può sembrare un po 'più semplice per alcuni. Utilizza lo SUBSTRING_INDEX MySQL function. A 1 restituisce tutto prima del primo spazio e un -1 restituisce tutto dopo l'ultimo spazio.

restituisce 'Chara':

SELECT SUBSTRING_INDEX(field1, ' ', 1) 

'ters' restituisce:

SELECT SUBSTRING_INDEX(field1, ' ', -1) 

dettagli

Un valore positivo cercherà per il tuo personaggio specificato dall'inizio del la stringa e un valore negativo inizierà dalla fine della stringa. Il valore del numero indica la quantità del carattere specificato da cercare prima di restituire il pezzo rimanente della stringa. Se il personaggio che stai cercando non esiste, verrà restituito l'intero valore del campo.

In questo caso, a -2 restituirebbe tutto a destra del penultimo spazio, che non esiste in questo esempio, pertanto verrà restituito l'intero valore del campo.

+2

Funziona anche, se ci sono stringhe, senza vuoto, ad esempio "chara" funzionerà anche. – bernhardh

+2

Questo ha funzionato alla perfezione nella versione major + secondaria di una versione con componenti x.y.z. – thomthom

+2

Funziona meglio quando si desidera restituire l'intero campo se il carattere non è stato trovato. – stephentgrammer

Problemi correlati