SQL Befehl CONCAT()?
Moin,
ich soll von einer Datenbank nur den ersten Buchstaben von den Vornamen abfragen.
Wie nutze ich da den obenstehenden Befehl?
2 Antworten
![](https://images.gutefrage.net/media/user/heizfeld/1587311154865_nmmslarge__0_0_1071_1071_bc5135be7491cfde9c137ff703a118b0.jpg?v=1587311155000)
Hallo,
CONCAT() verbindet alle übergebenen (bis zu 255) Strings zu einem und dürfte mit deinem Vorhaben gar nichts zu tun haben.
LEFT(string, number_of_chars), in deinem Fall LEFT(VORNAME,1) ist die benötigte Funktion.
![](https://images.gutefrage.net/media/user/ohwehohach/1484229011333_nmmslarge__192_3_203_203_916b80d33227bc2c78789585f46b3253.jpg?v=1484229011000)
Du musst angeben, WIEVIELE Buchstaben vom Anfang des Strings du haben willst. Das macht dieser Parameter.
![](https://images.gutefrage.net/media/user/daCypher/1444744777_nmmslarge.jpg?v=1444744777000)
number of chars = Anzahl der Buchstaben.
In deinem Fall willst du nur einen Buchstaben haben, also die 1.
![](https://images.gutefrage.net/media/user/joahnnes38/1595844161334_nmmslarge__370_0_1534_1534_c75272d2b4993bdcb6c531071285fbb3.jpg?v=1595844161000)
Ich habe es jetzt mit dem Befehl Substring gemacht. Aber wie nutze ich das jetzt in Kombination mit Concat.
Also ich möchte Quasi das Ergebnis nur in Kombination mit Substring:
SELECT CONCAT(`vorname`," ",`nachname` )
![](https://images.gutefrage.net/media/user/daCypher/1444744777_nmmslarge.jpg?v=1444744777000)
Anstatt direkt die Spalten reinzuschreiben, schreibst du halt die Substring-Funktion in die Klammern rein. Also
SELECT CONCAT(SUBSTRING(vorname, 1, 1), SUBSTRING(nachname, 1, 1)) AS initialen FROM Personen
![](https://images.gutefrage.net/media/user/joahnnes38/1595844161334_nmmslarge__370_0_1534_1534_c75272d2b4993bdcb6c531071285fbb3.jpg?v=1595844161000)
![](https://images.gutefrage.net/media/user/daCypher/1444744777_nmmslarge.jpg?v=1444744777000)
![](https://images.gutefrage.net/media/user/heizfeld/1587311154865_nmmslarge__0_0_1071_1071_bc5135be7491cfde9c137ff703a118b0.jpg?v=1587311155000)
Dann schreibt man die 1 rein, deswegen habe ich das ja gemacht. Willst du die ersten 3 haben, kommt eben die 3 reinusw.
![](https://images.gutefrage.net/media/user/TechPech1984/1632773764038_nmmslarge__12_0_519_519_b8bdbc8023c4e7722d66db9f2af2d5fd.png?v=1632773764000)
wie kommst du auf die 255 , ich würde sagen, das liegt doch eher an der config des servers.
![](https://images.gutefrage.net/media/user/ohwehohach/1484229011333_nmmslarge__192_3_203_203_916b80d33227bc2c78789585f46b3253.jpg?v=1484229011000)
Nein, dafür verwendest Du LEFT (Du könntest auch SUBSTRING verwenden, aber LEFT ist aus meiner Erfahrung signifikant schneller).
![](https://images.gutefrage.net/media/user/joahnnes38/1595844161334_nmmslarge__370_0_1534_1534_c75272d2b4993bdcb6c531071285fbb3.jpg?v=1595844161000)
Ah sorry, sollte auch den Befehl Substring nehmen und es dann nämlich mit Concat kombinieren :D
![](https://images.gutefrage.net/media/user/joahnnes38/1595844161334_nmmslarge__370_0_1534_1534_c75272d2b4993bdcb6c531071285fbb3.jpg?v=1595844161000)
Aber der Befehl fängt doch an die Buchstaben von links wegzulassen oder nicht?
![](https://images.gutefrage.net/media/user/ohwehohach/1484229011333_nmmslarge__192_3_203_203_916b80d33227bc2c78789585f46b3253.jpg?v=1484229011000)
Nein. Der Befehl LEFT liefert Dir die x Buchstaben am Anfang des gegebenen Strings.
LEFT(Feld, 5) liefert die 5 ersten Buchstaben aus dem Feld "Feld" - sofern das eben Text enthält.
Was genau sagt die number of chars?
Wenn ich jetzt nur den ersten Buchstaben haben möchte.