sql >> Database >  >> RDS >> Mysql

De Pipe Concatenation Operator inschakelen in MySQL

MySQL ondersteunt het gebruik van de pipe concatenation-operator (|| ) voor het aaneenschakelen van zijn operanden. U moet het echter eerst inschakelen.

Standaard behandelt MySQL || als een logische OR operator (hoewel deze behandeling momenteel verouderd is). De ANSI-standaard vereist echter dat || is een aaneenschakelingsoperator. Misschien heeft u code die al gebruikmaakt van de pipe-concatenatie-operator, en wilt u liever niet doorgaan en de code wijzigen om de CONCAT() te gebruiken functie.

Gelukkig biedt MySQL ons de mogelijkheid om te specificeren of het moet worden behandeld als een logische OR operator of een concatenatie-operator.

U kunt || . inschakelen als een aaneenschakelingsoperator door de toepasselijke optie in uw sql_mode . in te stellen .

Je hebt twee opties:

  • Voeg PIPES_AS_CONCAT toe naar uw sql_mode
  • Stel sql_mode in naar ANSI .

Optie 1

Hier voeg ik PIPES_AS_CONCAT . toe naar mijn sql_mode :

SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT')); 

Het is waar dat ik gewoon had kunnen gaan sql_mode = 'PIPES_AS_CONCAT' , maar dan zou ik alle bestaande opties kwijt zijn. Door de bovenstaande techniek te gebruiken, zorg ik ervoor dat ik geen bestaande opties verlies.

Optie 2

Een andere manier om dit te doen is door de sql_mode . in te stellen naar ANSI :

SET sql_mode='ANSI';

ANSI modus verandert de syntaxis en het gedrag om beter overeen te komen met standaard SQL.

Controleer uw sql_mode

U kunt uw sql_mode . controleren zoals dit:

SELECT @@sql_mode;

Resultaat:

REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI

Dat is het resultaat dat ik krijg na het veranderen naar ANSI modus. We kunnen de PIPES_AS_CONCAT . zien is opgenomen in de lijst met opties.

Aaneenschakelingsvoorbeeld

Na het instellen van de sql_mode met een van de bovenstaande technieken kunnen we nu || . gebruiken als operator voor pijpaaneenschakeling:

SELECT 'Homer' || 'Symptom';

Resultaat:

HomerSymptom

Als we de operator voor pijpaaneenschakeling niet hadden ingeschakeld, hadden we hoogstwaarschijnlijk een onverwacht resultaat gekregen, met een waarschuwing.


  1. MariaDB CURRENT_TIMESTAMP() uitgelegd

  2. Array van ints doorgeven aan T-SQL opgeslagen proc via entiteitsframework

  3. Implementatie van SQL Server-prestatie-indicator voor query's, opgeslagen procedures en triggers

  4. Hoe te schrijven met BCP naar een externe SQL Server?