MySQL understøtter brugen af rørsammenkædningsoperatoren (||
) for at sammenkæde dets operander. Du skal dog først aktivere det.
Som standard behandler MySQL ||
som en logisk OR
operatør (selvom denne behandling i øjeblikket er forældet). ANSI-standarden kræver dog, at ||
er en sammenkædningsoperatør. Måske har du kode, der allerede bruger rørsammenkædningsoperatoren, og du vil helst ikke gå igennem og ændre koden til at bruge CONCAT()
funktion.
Heldigvis giver MySQL os muligheden for at angive, om det skal behandles som en logisk OR
operator eller en sammenkædningsoperator.
Du kan aktivere ||
som en sammenkædningsoperatør ved at indstille den relevante mulighed i din sql_mode
.
Du har to muligheder:
- Tilføj
PIPES_AS_CONCAT
til dinsql_mode
- Indstil
sql_mode
tilANSI
.
Mulighed 1
Her tilføjer jeg PIPES_AS_CONCAT
til min sql_mode
:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Det er rigtigt, at jeg lige kunne have gået sql_mode = 'PIPES_AS_CONCAT'
, men jeg ville have mistet alle eksisterende muligheder. Brug af ovenstående teknik sikrer, at jeg ikke mister nogen eksisterende muligheder.
Mulighed 2
En anden måde at gøre det på er at indstille sql_mode
til ANSI
:
SET sql_mode='ANSI';
ANSI
tilstand ændrer syntaks og adfærd, så den passer tættere til standard SQL.
Tjek din sql_mode
Du kan tjekke din sql_mode
sådan her:
SELECT @@sql_mode;
Resultat:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI
Det er resultatet, jeg får efter at have ændret til ANSI
mode. Vi kan se PIPES_AS_CONCAT
er inkluderet i listen over muligheder.
Forbindelseseksempel
Efter indstilling af sql_mode
ved at bruge en af ovenstående teknikker, kan vi nu bruge ||
som rørsammenkædningsoperatør:
SELECT 'Homer' || 'Symptom';
Resultat:
HomerSymptom
Hvis vi ikke havde aktiveret rørsammenkædningsoperatøren, ville vi højst sandsynligt have fået et uventet resultat med en advarsel.