MySQL podporuje použití operátoru zřetězení potrubí (|| ) pro zřetězení jeho operandů. Nejprve jej však musíte povolit.
Ve výchozím nastavení MySQL zpracovává || jako logické OR operátor (ačkoli tato úprava je v současné době zastaralá). Standard ANSI však vyžaduje || je operátor zřetězení. Možná máte kód, který již používá operátor zřetězení potrubí, a raději byste neprocházeli a neměnili kód tak, aby používal CONCAT() funkce.
Naštěstí nám MySQL poskytuje možnost určit, zda s tím zacházet jako s logickým OR operátor nebo operátor zřetězení.
Můžete povolit || jako operátor zřetězení nastavením příslušné možnosti ve vašem sql_mode .
Máte dvě možnosti:
- Přidejte
PIPES_AS_CONCATdo vašehosql_mode - Nastavte
sql_modenaANSI.
Možnost 1
Zde přidávám PIPES_AS_CONCAT do mého sql_mode :
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Je pravda, že jsem mohl jít sql_mode = 'PIPES_AS_CONCAT' , ale ztratil bych všechny stávající možnosti. Použití výše uvedené techniky zajistí, že neztratím žádné existující možnosti.
Možnost 2
Dalším způsobem, jak to udělat, je nastavit sql_mode na ANSI :
SET sql_mode='ANSI';
ANSI režim mění syntaxi a chování tak, aby více odpovídaly standardnímu SQL.
Zkontrolujte svůj sql_mode
Můžete zkontrolovat svůj sql_mode takhle:
SELECT @@sql_mode; Výsledek:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI
To je výsledek, který dostanu po změně na ANSI režimu. Můžeme vidět PIPES_AS_CONCAT je zahrnuto v seznamu možností.
Příklad zřetězení
Po nastavení sql_mode pomocí jedné z výše uvedených technik můžeme nyní použít || jako operátor zřetězení potrubí:
SELECT 'Homer' || 'Symptom'; Výsledek:
HomerSymptom
Pokud bychom nepovolili operátor zřetězení potrubí, s největší pravděpodobností bychom dostali neočekávaný výsledek s varováním.