Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да активирате оператора за конкатенация на тръби в MySQL

MySQL поддържа използването на оператора за конкатенация на тръбите (|| ) за конкатенация на неговите операнди. Въпреки това първо трябва да го активирате.

По подразбиране MySQL третира || като логическо OR оператор (въпреки че това третиране в момента е отхвърлено). Стандартът ANSI обаче изисква това || е оператор на конкатенация. Може би имате код, който вече използва оператора за конкатенация на тръби и предпочитате да не преминавате и да променяте кода, за да използвате CONCAT() функция.

За щастие MySQL ни предоставя възможността да посочим дали да го третираме като логическо OR оператор или оператор на конкатенация.

Можете да активирате || като оператор на конкатенация, като зададете приложимата опция във вашия sql_mode .

Имате две опции:

  • Добавете PIPES_AS_CONCAT към вашия sql_mode
  • Задайте sql_mode към ANSI .

Опция 1

Тук добавям PIPES_AS_CONCAT към моя sql_mode :

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

Вярно е, че можех просто да отида sql_mode = 'PIPES_AS_CONCAT' , но щях да загубя всички съществуващи опции. Използването на горната техника гарантира, че няма да загубя съществуващи опции.

Опция 2

Друг начин да го направите е да зададете sql_mode към ANSI :

SET sql_mode='ANSI';

ANSI режимът променя синтаксиса и поведението, за да съответства в по-голяма степен на стандартния SQL.

Проверете вашия sql_mode

Можете да проверите вашия sql_mode така:

SELECT @@sql_mode;

Резултат:

REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI

Това е резултатът, който получавам след промяна на ANSI режим. Можем да видим PIPES_AS_CONCAT е включен в списъка с опции.

Пример за конкатенация

След задаване на sql_mode използвайки една от горните техники, вече можем да използваме || като оператор за конкатенация на тръби:

SELECT 'Homer' || 'Symptom';

Резултат:

HomerSymptom

Ако не бяхме активирали оператора за конкатенация на тръби, най-вероятно щяхме да получим неочакван резултат с предупреждение.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да синхронизирам повторно Mysql DB, ако главен и подчинен имат различен корпус на база данни на Mysql репликация?

  2. mysql_fetch_row() срещу mysql_fetch_assoc() срещу mysql_fetch_array()

  3. MySQL Workbench:Грешка в заявката (1064):Синтактична грешка близо до „VISIBLE“ на ред 1

  4. Как да запазите подписа в MySQL

  5. Инсталиране на MySQL JDBC драйвери в Pentaho Data Integration и BA Server инструменти