sql >> Database teknologi >  >> RDS >> Mysql

Sådan aktiverer du Pipe Concatenation Operator i MySQL

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 din sql_mode
  • Indstil sql_mode til ANSI .

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.


  1. Hvordan Substr() virker i SQLite

  2. Hvordan kan jeg eksportere skemaet for en database i PostgreSQL?

  3. Skift adgangskoden til et SQL Server-login

  4. datetime vs datetime2 i SQL Server:Hvad er forskellen?