CONCAT în MySQL

Funcții Toate versiunile MySQL și MariaDB

Lipește mai multe texte într-unul singur.

Sintaxă
CONCAT(text1, text2, ...)
CONCAT_WS(separator, text1, text2, ...)

Ce face CONCAT

CONCAT lipește valorile primite, în ordine. Numerele sunt transformate automat în text.

Atenție: dacă oricare valoare este NULL, CONCAT returnează NULL. CONCAT_WS (cu separator) primește întâi separatorul și sare peste valorile NULL.

În MySQL, || nu lipește texte (este „sau” logic) și + adună numere.

Parametri

Parametru Descriere
text1, text2, ... Valorile lipite.
separator Doar la CONCAT_WS: textul pus între valori.

Ce returnează

Textul rezultat sau NULL.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE produse (
  id INT PRIMARY KEY,
  nume VARCHAR(50) NOT NULL,
  categorie VARCHAR(30),
  pret INT,
  stoc INT
);

INSERT INTO produse VALUES
  (1, 'Laptop', 'Electronice', 3500, 4),
  (2, 'Mouse', 'Electronice', 80, 25),
  (3, 'Birou', 'Mobilier', 900, 0),
  (4, 'Scaun', 'Mobilier', 650, 7),
  (5, 'Monitor', 'Electronice', 1200, 3);

Exemplul 1: Text din mai multe coloane

SELECT CONCAT(nume, ' - ', pret, ' lei') AS eticheta FROM produse ORDER BY pret;

Rezultat

+--------------------+
| eticheta           |
+--------------------+
| Mouse - 80 lei     |
| Scaun - 650 lei    |
| Birou - 900 lei    |
| Monitor - 1200 lei |
| Laptop - 3500 lei  |
+--------------------+

Exemplul 2: Separator comun cu CONCAT_WS

SELECT CONCAT_WS(' / ', categorie, nume, stoc) AS linie FROM produse WHERE id <= 2;

Rezultat

+--------------------------+
| linie                    |
+--------------------------+
| Electronice / Laptop / 4 |
| Electronice / Mouse / 25 |
+--------------------------+

Exemplul 3: Capcana NULL

SELECT CONCAT('Telefon: ', NULL) AS cu_concat, CONCAT_WS(', ', 'Cluj', NULL, 'Romania') AS cu_concat_ws;

Rezultat în MySQL

+-----------+---------------+
| cu_concat | cu_concat_ws  |
+-----------+---------------+
| NULL      | Cluj, Romania |
+-----------+---------------+

Greșeli frecvente

  • Lipești texte cu +: 'Ana' + ' Pop' dă 0, pentru că MySQL încearcă să adune numere.
  • O coloană NULL face tot rezultatul NULL. Folosește CONCAT_WS sau COALESCE(coloana, '').

Comenzi înrudite

  • COALESCE / IFNULL: Înlocuiește NULL cu o valoare implicită: returnează prima valoare care nu este NULL.
  • AS (alias): Dă un nume nou (alias) unei coloane sau unui tabel în rezultatul interogării.
  • LIKE: Caută texte după un model: începe cu, se termină cu, conține.