SUBSTRING() în MySQL

Extrage o bucată dintr-un text, pornind de la o poziție și cu o lungime dată.

Sintaxă
SUBSTRING(sir, pozitie[, lungime])
SUBSTRING(sir FROM pozitie [FOR lungime])

Ce face SUBSTRING()

SUBSTRING() taie o parte din text. Pozițiile încep de la 1, nu de la 0. O poziție negativă se numără de la sfârșitul textului. Funcția lucrează pe caractere, deci diacriticele nu sunt tăiate greșit.

SUBSTR() și MID() sunt sinonime pentru SUBSTRING().

Parametri

Parametru Descriere
sir Textul original.
pozitie De unde începe extragerea. 1 este primul caracter, -1 ultimul.
lungime Opțional. Câte caractere să extragă. Fără ea, extrage până la final.

Ce returnează

Bucata de text extrasă (șir gol dacă poziția depășește lungimea).

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,
  cod VARCHAR(20),
  nume VARCHAR(50),
  pret DECIMAL(10,2),
  etichete VARCHAR(100)
);

INSERT INTO produse VALUES
  (1, 'LAP-2026-01', 'Laptop ultraportabil', 3499.90, 'electronice,birou,promo'),
  (2, 'MOU-2025-07', 'Mouse fără fir', 79.50, 'electronice,accesorii'),
  (3, 'SCA-2026-03', 'Scaun ergonomic', 1249.00, 'mobilier,birou'),
  (4, 'CAB-2024-11', 'Cablu USB-C', 35.00, 'accesorii,promo');

Exemplul 1: Poziții pozitive, negative și sinonimele

SELECT SUBSTRING('Timișoara', 1, 4) AS inceput,
       SUBSTRING('Timișoara', -4) AS sfarsit,
       SUBSTR('Timișoara', 5, 2) AS cu_substr,
       MID('Timișoara', 5, 2) AS cu_mid;

Rezultat

+---------+---------+-----------+--------+
| inceput | sfarsit | cu_substr | cu_mid |
+---------+---------+-----------+--------+
| Timi    | oara    | șo        | șo     |
+---------+---------+-----------+--------+

Exemplul 2: Anul din codul produsului

SELECT cod, SUBSTRING(cod, 5, 4) AS an
FROM produse
ORDER BY id;

Rezultat

+-------------+------+
| cod         | an   |
+-------------+------+
| LAP-2026-01 | 2026 |
| MOU-2025-07 | 2025 |
| SCA-2026-03 | 2026 |
| CAB-2024-11 | 2024 |
+-------------+------+

Greșeli frecvente

  • Pornești numărătoarea de la 0, ca în PHP sau JavaScript. SUBSTRING('abc', 0) returnează un șir gol.

Comenzi înrudite

  • LEFT(): Returnează primele N caractere dintr-un text.
  • RIGHT(): Returnează ultimele N caractere dintr-un text.
  • SUBSTRING_INDEX(): Returnează textul dinaintea (sau de după) a N-a apariție a unui separator.
  • LOCATE(): Găsește poziția primei apariții a unui text în alt text (0 dacă lipsește).