Ich möchte alle Zeichen in einem Feld vor einem Leerzeichen erhalten
Zum Beispiel, wenn field1
ist"chara ters"
Ich möchte, dass es zurückkommt "chara"
Wie würde diese select-Anweisung aussehen?
SELECT LEFT(field1,LOCATE(' ',field1) - 1)
Beachten Sie, dass, wenn die betreffende Zeichenfolge keine Leerzeichen enthält, eine leere Zeichenfolge zurückgegeben wird.
select SUBSTRING_INDEX( field1, ' ', 1 ) from table;
ist die Wahl, ob wir eine vollständige Zeichenfolge haben möchten, wenn kein Leerzeichen vorhanden ist.SUBSTRING_INDEX
) ist als allgemeine Lösung "besser", da Werte beibehalten werden, die kein Trennzeichen enthalten, anstatt einen leeren Wert zu ergeben.Im Folgenden finden Sie eine weitere Methode, die funktioniert und einigen möglicherweise etwas einfacher erscheint. Es verwendet die MySQL-Funktion SUBSTRING_INDEX . Eine 1 gibt alles vor dem ersten Leerzeichen zurück und eine -1 gibt alles nach dem letzten Leerzeichen zurück.
Dies gibt 'chara' zurück:
SELECT SUBSTRING_INDEX( field1, ' ', 1 )
Dies gibt 'ters' zurück:
SELECT SUBSTRING_INDEX( field1, ' ', -1 )
Einzelheiten
Ein positiver Wert sucht am Anfang der Zeichenfolge nach Ihrem angegebenen Zeichen, und ein negativer Wert beginnt am Ende der Zeichenfolge. Der Wert der Zahl gibt die Anzahl der angegebenen Zeichen an, nach denen gesucht werden muss, bevor das verbleibende Teil der Zeichenfolge zurückgegeben wird. Wenn das gesuchte Zeichen nicht vorhanden ist, wird der gesamte Feldwert zurückgegeben.
In diesem Fall würde ein -2 alles rechts vom vorletzten Leerzeichen zurückgeben, was in diesem Beispiel nicht vorhanden ist, sodass der gesamte Feldwert zurückgegeben wird.
quelle
Sie würden dafür einige String-Operationen benötigen . Angenommen, jedes Feld hat mindestens ein Leerzeichen:
SELECT SUBSTR(field1, 0, LOCATE(' ', field1)) FROM your_table;
Sicherer Ansatz:
SELECT IF( LOCATE(' ', field1), SUBSTR(field1, 0, LOCATE(' ', field1)), field1 ) FROM your_table;
quelle
SELECT SUBSTR(field1, 1, LOCATE(' ', field1)) FROM your_table;