Unterschied zwischen Mysql und Mssql
kleinerkönig
- datenbank
0 Manuel B.0 kleinerkönig0 kleinerkönig
Hallo,
ich habe eine SQL Abfrage in MSSQL wo ich zwei Tabellenspalten zu einem Alias zusammenfüge (tblKontakte.Nachname + ' ' + tblKontakte.Vorname AS uebergeben_an) in MYSQL funktioniert das so leider nicht. Wie funktioniert das unter Mysql??
Gruss
kleinerkönig
Ich grüsse den Cosmos,
Wie funktioniert das unter Mysql??
Ich würde sagen, du solltest dir mal die Doku zu JOIN reinziehen. Da du nicht sagst, welche MySQL-Version du verwendest, ist es schwer, eine genaue Auskunft zu geben.
Möge das "Self" mit euch sein
Hallo,
die MYSQL Version die ich nutze ist 5.0.24
Gruss
kleinerkönig
Habe mal gerade join überflogen, da wird immer von gesprochen zwei Tabellen zusammenzufügen. Ich möchte aber nur 2 Spalten zu einer bekommen.
Gruss
kleinerkönig
Hi,
der reguläre Concat-Operator ist IIRC ||, also zwei Senkrechtstriche. Ansonsten könnte es sein, dass es eine explizite Concat-Funktion gibt.
MfG
Rouven
echo $begrüßung;
der reguläre Concat-Operator ist IIRC ||, also zwei Senkrechtstriche. Ansonsten könnte es sein, dass es eine explizite Concat-Funktion gibt.
|| ist unter MySQL ein logisches Oder (ebenso wie OR): Logical Operators
Um Strings miteinander zu verbinden nimmt man die Funktionen CONCAT() oder CONCAT_WS(). String Functions
echo "$verabschiedung $name";
Hi,
|| ist unter MySQL ein logisches Oder (ebenso wie OR): Logical Operators
genau, ich finde es interessant und wichtig darauf hinzuweisen, dass MySQL hiermit vom SQL-Standard abweicht (MySQL vs. ANSI
MfG
Rouven
Hallo und Guten Morgen,
also ich raff es nicht.
Um Strings miteinander zu verbinden nimmt man die Funktionen CONCAT() oder CONCAT_WS(). String Functions
Ich habe jetzt in MSSQL eine Abfrage (vereinfacht):
select Nachname + ' ' + Vorname AS Name from tblkontakte
Damit bekomme ich als Ergebnis eine Spalte Name mit allen Namen in der Reihenfolge "Meyer Manfred".
Wenn ich dass aber mit SELECT CONCAT_WS(',','Nachname','Vorname') from tblkontakte; in MYSQL ein Abfrage mache, bekomme ich zwar eine Spalte, aber mit genau dem Text aus der Abfrage, also: "Nachname,Vorname" und nicht Meyer,Manfred.
Gruss
kleinerkönig
Hallo kleinerkönig,
Ich habe jetzt in MSSQL eine Abfrage (vereinfacht):
select Nachname + ' ' + Vorname AS Name from tblkontakte
Damit bekomme ich als Ergebnis eine Spalte Name mit allen Namen in der Reihenfolge "Meyer Manfred".
Wenn ich dass aber mit SELECT CONCAT_WS(',','Nachname','Vorname') from tblkontakte; in MYSQL ein Abfrage mache, bekomme ich zwar eine Spalte, aber mit genau dem Text aus der Abfrage, also: "Nachname,Vorname" und nicht Meyer,Manfred.
Kein Wunder. Du verbindest ja auch Strings und keine Tabellenspalten. Da sind genau vier ' zuviel.
Abgesehen davon könntest Du auch schreiben select Nachname + ', ' + Vorname AS Name from tblkontakte
Grüße
Andreas
echo $begrüßung;
Du verbindest ja auch Strings und keine Tabellenspalten. Da sind genau vier ' zuviel.
Richtig. Wenn Spaltennamen mit reservierten Bezeichnern kollidieren, sind die Spaltennamen in Backticks
einzuschließen. 'Einfache' und "doppelte" Anführungszeichen kennzeichnen Strings.
Abgesehen davon könntest Du auch schreiben select Nachname + ', ' + Vorname AS Name from tblkontakte
Nein, kann er nicht. Das heißt, kann er schon, aber das ergibt nicht das gewünschte Ergebnis. Das + ist in MySQL kein Stringverkettungsoperator. MySQL versucht die angegebenen Spalteninhalte in numerische Werte umzuwandeln und dann zu addieren.
echo "$verabschiedung $name";
Hallo dedlfix,
Abgesehen davon könntest Du auch schreiben select Nachname + ', ' + Vorname AS Name from tblkontakte
Nein, kann er nicht. Das heißt, kann er schon, aber das ergibt nicht das gewünschte Ergebnis. Das + ist in MySQL kein Stringverkettungsoperator. MySQL versucht die angegebenen Spalteninhalte in numerische Werte umzuwandeln und dann zu addieren.
Du hast Recht. Danke für die Korrektur.
Grüße
Andreas
Hallo Andreas,
danke.
Kein Wunder. Du verbindest ja auch Strings und keine Tabellenspalten. Da sind genau vier ' zuviel.
Wenn ich die ' wegnehme dann klappt es, und wenn ich dann noch AS dahinter hänge habe ich auch den Spaltennamen.
SELECT CONCAT_WS( ' ', Nachname, Vorname ) AS Name
FROM tblkontakte;
Abgesehen davon könntest Du auch schreiben select Nachname + ', ' + Vorname AS Name from tblkontakte
Das klappt so aber nur unter MSSQL aber nicht unter MYSQL. Das war ja mein Problem.
Gruss
kleinerkönig