MySQL obsługuje użycie operatora konkatenacji potoku (|| ) do łączenia jego operandów. Jednak musisz go najpierw włączyć.
Domyślnie MySQL traktuje || jako logiczne OR operator (chociaż to traktowanie jest obecnie przestarzałe). Jednak standard ANSI wymaga, aby || jest operatorem konkatenacji. Być może masz kod, który już używa operatora konkatenacji potoku i wolałbyś nie przechodzić i zmieniać kodu tak, aby używał CONCAT() funkcja.
Na szczęście MySQL daje nam możliwość określenia, czy traktować go jako logiczne OR operator lub operator konkatenacji.
Możesz włączyć || jako operator konkatenacji, ustawiając odpowiednią opcję w swoim sql_mode .
Masz dwie opcje:
- Dodaj
PIPES_AS_CONCATdo twojegosql_mode - Ustaw
sql_modedoANSI.
Opcja 1
Tutaj dodaję PIPES_AS_CONCAT do mojego sql_mode :
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
To prawda, że mogłem po prostu przejść sql_mode = 'PIPES_AS_CONCAT' , ale straciłbym wszystkie istniejące opcje. Korzystanie z powyższej techniki zapewnia, że nie stracę żadnych istniejących opcji.
Opcja 2
Innym sposobem na to jest ustawienie sql_mode do ANSI :
SET sql_mode='ANSI';
ANSI mode zmienia składnię i zachowanie, aby były bardziej zgodne ze standardowym SQL.
Sprawdź swój sql_mode
Możesz sprawdzić swój sql_mode tak:
SELECT @@sql_mode; Wynik:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI
Taki wynik otrzymuję po zmianie na ANSI tryb. Widzimy PIPES_AS_CONCAT znajduje się na liście opcji.
Przykład konkatenacji
Po ustawieniu sql_mode używając jednej z powyższych technik, możemy teraz użyć || jako operator konkatenacji potoku:
SELECT 'Homer' || 'Symptom'; Wynik:
HomerSymptom
Gdybyśmy nie włączyli operatora łączenia potoków, najprawdopodobniej otrzymalibyśmy nieoczekiwany wynik z ostrzeżeniem.