vorrei ottenere tutti i caratteri in un campo prima di uno spazioOttenere tutti i caratteri prima di spazio in MySQL
Per esempio, se field1
è "chara ters"
voglio per tornare "chara"
Cosa sarebbe questa affermazione di selezione simile?
vorrei ottenere tutti i caratteri in un campo prima di uno spazioOttenere tutti i caratteri prima di spazio in MySQL
Per esempio, se field1
è "chara ters"
voglio per tornare "chara"
Cosa sarebbe questa affermazione di selezione simile?
SELECT LEFT(field1,LOCATE(' ',field1) - 1)
Si noti che se la stringa in questione non contiene gli spazi, questo restituirà una stringa vuota.
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;
+1 per la versione sicura, sebbene non sia chiaro quale risultato debba essere restituito quando il campo non contiene uno spazio vuoto. – Mchl
ha dovuto modificare 0 per 1: 'SELECT SUBSTR (campo1, 1, LOCATE ('', campo1)) FROM your_table;' –
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.
Funziona anche, se ci sono stringhe, senza vuoto, ad esempio "chara" funzionerà anche. – bernhardh
Questo ha funzionato alla perfezione nella versione major + secondaria di una versione con componenti x.y.z. – thomthom
Funziona meglio quando si desidera restituire l'intero campo se il carattere non è stato trovato. – stephentgrammer
+1 non sapeva di 'SINISTRA' – soulmerge
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
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". –