Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak włączyć operatora konkatenacji potoków w MySQL?

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_CONCAT do twojego sql_mode
  • Ustaw sql_mode do ANSI .

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa NIE PODOBNIE w MySQL

  2. Bitwy kodowania znaków UTF-8 json_encode()

  3. Wyszukiwanie pełnotekstowe z InnoDB

  4. Jak połączyć dwa stoły w MySQL

  5. Jak zwiększyć wydajność MySQL AWS dwukrotnie w porównaniu z Amazon RDS przy tym samym koszcie?