track
Funcția SQL REPLACE() este utilă pentru manipularea textului, deoarece poate înlocui o parte a unui șir cu un alt subșir specificat. În cele mai multe cazuri, funcția SQL REPLACE() este folosită pentru a modifica toate aparițiile unui subșir dintr-un șir într-un set de date dat.
Manipularea textului este importantă în SQL deoarece ajută la curățarea și transformarea datelor pentru analize eficiente. În acest tutorial, îți voi arăta cum să o folosești.
Dacă îți dorești o carieră ca data scientist sau data engineer, îți recomand cursul DataCamp Introducere în SQL pentru a înțelege bazele funcțiilor SQL în transformarea datelor. Ar trebui să consulți și ghidul funcțiilor pe șiruri în SQL pentru a recapitula câteva concepte de bază pe măsură ce aprofundăm subiectul.
Pe scurt
-
REPLACE(string, old_substring, new_substring)înlocuiește fiecare apariție a unui subșir într-un singur apel -
Leagă apeluri pentru a înlocui mai multe subșiruri:
REPLACE(REPLACE(col, 'a', 'b'), 'c', 'd') -
Trimite un șir gol pentru a elimina caracterele:
REPLACE(phone, '-', '') -
Dacă oricare argument este
NULL, funcția returneazăNULLpentru acel rând -
Sensibilitatea la majuscule depinde de baza ta de date și collation—SQL Server și MySQL sunt implicit insensibile la majuscule; PostgreSQL este implicit sensibil
Înțelegerea funcției SQL REPLACE()
Funcția REPLACE() în SQL caută subșirul sau șirul specificat într-o coloană și îl înlocuiește cu un alt șir dat. Exemplul de mai jos arată utilizarea de bază a funcției REPLACE(). Argumentele funcției includ:
-
string: Șirul original în care trebuie să faci înlocuirea. -
old_substring: Subșirul care urmează să fie înlocuit. -
new_substring: Subșirul care îl înlocuiește pe cel vechi.
REPLACE(string, old_substring, new_substring)
Când folosești funcția REPLACE() pentru a modifica șirurile dintr-un tabel, interogarea va avea următoarea sintaxă, unde:
-
column_name: Coloana folosită pentru a căuta aparițiile subșirului. -
old_substring: Subșirul care urmează să fie înlocuit. -
new_substring: Subșirul care îl înlocuiește pe cel vechi.
-- Select the description column from the products table,
-- replacing occurrences of 'old' with 'new'
SELECT
REPLACE(column_name, 'old_substring', 'new_substring') AS updated_column
FROM
Products;
Exemplu de REPLACE()
Funcția SQL REPLACE() modifică sau înlocuiește toate aparițiile unui șir cu un subșir sau șir specificat. În exemplul de mai jos, funcția REPLACE() în SQL a înlocuit valoarea old cu new în coloana description. Interogarea va rula pe fiecare rând pentru a înlocui șirul vechi cu unul nou.
-- Select the description column from the products table,
-- replacing occurrences of 'old' with 'new'
SELECT
REPLACE(description, 'old', 'new') AS updated_description
FROM
Products;
Notă: Bazele de date MySQL, PostgreSQL, Oracle și SQL Server acceptă toate funcția REPLACE().
Cazuri de utilizare pentru REPLACE() în SQL
Există multe cazuri importante de utilizare a funcției SQL REPLACE() în manipularea textului și transformarea datelor. Acestea includ:
Înlocuire de bază
Poți folosi funcția SQL REPLACE() pentru a efectua o înlocuire de bază. Să presupunem că avem următorul tabel în baza noastră de date SQL Server:
Exemplu de tabel Products. Imagine de la autor.
Folosind următoarea interogare SQL, poți utiliza funcția REPLACE() pentru a schimba statusul old în new.
SELECT
product_id,
product_name,
price,
REPLACE(status, 'old', 'new') AS updated_status
FROM Products;
Tabelul rezultat va arăta ca în imaginea de mai jos.

Tabel actualizat cu SQL REPLACE(). Imagine de la autor.
Înlocuirea mai multor subșiruri
Dacă vrei să înlocuiești mai multe subșiruri, folosește funcții REPLACE() înlănțuite. Aici actualizăm valoarea old cu outdated și new cu fresh.
-- Chain multiple REPLACE() functions to replace 'old' with 'outdated' and 'new' with 'fresh'
SELECT
product_id,
product_name,
price,
REPLACE(REPLACE(status, 'old', 'outdated'), 'new', 'fresh') AS updated_status
FROM Products;
Tabelul rezultat este prezentat mai jos.

Tabel actualizat folosind mai multe subșiruri. Imagine de la autor.
Eliminarea caracterelor
Transmite un șir gol ca al treilea argument pentru a elimina complet caracterele. Aceasta este cea mai curată metodă de a elimina punctuația, spațiile în plus sau caracterele de formatare dintr-o coloană.
-- Remove dashes from phone numbers
SELECT
customer_id,
REPLACE(phone_number, '-', '') AS clean_phone
FROM Customers;
De exemplu, '555-867-5309' devine '5558675309'. Aceeași tehnică elimină caractere speciale, artefacte de codare sau spații nedorite din datele importate.
Gestionarea sensibilității la majuscule
Sensibilitatea la majuscule în REPLACE() depinde de baza ta de date și de collation. PostgreSQL o tratează implicit ca sensibilă, astfel REPLACE(col, 'Old', 'New') nu va potrivi 'old'. SQL Server și MySQL urmează collation-ul coloanei sau al bazei—majoritatea instalărilor implicite folosesc un collation insensibil la majuscule, deci REPLACE() va potrivi indiferent de caz.
Când vrei să înlocuiești valori fără a ține cont de majuscule, ar trebui să folosești funcțiile UPPER() sau LOWER() pentru a converti textul înainte de înlocuire. Această tehnică păstrează valorile consecvente.
-- Replace 'OLD' with 'OUTDATED', handling case sensitivity by converting to upper case
SELECT
product_id,
product_name,
price,
REPLACE(UPPER(status), 'OLD', 'OUTDATED') AS updated_status
FROM Products;

Tabel actualizat folosind funcțiile REPLACE() și UPPER(). Imagine de la autor.
-- Replace 'old' with 'outdated', handling case sensitivity by converting to lowercase
SELECT
product_id,
product_name,
price,
REPLACE(LOWER(status), 'old', 'outdated') AS updated_status
FROM Products;

Tabel actualizat folosind funcțiile SQL REPLACE() și LOWER(). Imagine de la autor.
Tehnici avansate
Aceste tehnici combină REPLACE() cu alte funcții SQL pentru a gestiona înlocuiri care depășesc un simplu find-and-swap.
Înlocuiri cu valori dinamice
Funcția REPLACE() poate fi folosită pentru a efectua înlocuiri dinamice printr-o combinație cu alte funcții SQL. De exemplu, folosind funcția REPLACE(), poți utiliza valoarea altei coloane pentru a înlocui subșirul. În exemplul de mai jos, funcția REPLACE() înlocuiește fiecare produs vechi cu valoarea reală din product_name.
-- Replace 'old' with the value from product_name column
SELECT
product_id,
product_name,
price,
REPLACE(status, 'old', product_name) AS updated_status
FROM Products;

Tabel actualizat folosind funcția REPLACE() și valori dinamice. Imagine de la autor.
Folosirea REPLACE() în instrucțiuni UPDATE
Funcția SQL REPLACE() funcționează în interiorul instrucțiunilor UPDATE pentru a modifica valorile coloanelor pe unul sau mai multe rânduri. Interogarea de mai jos înlocuiește valoarea old cu outdated în coloana status.
-- Update the status column to replace 'old' with 'outdated'
UPDATE Products
SET status = REPLACE(status, 'old', 'outdated')
WHERE status LIKE '%old%';
Pentru scenarii mai complexe, cum ar fi actualizarea unui tabel prin alăturarea lui cu altul, vezi tutorialul nostru despre SQL UPDATE cu JOIN.
Combinarea REPLACE() cu alte funcții pe șiruri
O tehnică avansată este combinarea REPLACE() cu alte funcții SQL pentru șiruri, precum CHARINDEX() sau SUBSTRING(), atunci când înlocuiești valori de tip șir.
-- Replace part of the product name starting from the first space with 'Updated'
SELECT
product_id,
product_name,
price,
-- Extract the substring of product_name starting from the first space to the end
REPLACE(product_name, SUBSTRING(product_name, CHARINDEX(' ', product_name), LEN(product_name)), ' Updated') AS updated_product_name
FROM Products;
Tabelul rezultat din interogarea de mai sus este prezentat mai jos.

Tabel actualizat folosind REPLACE() și alte funcții pe șiruri. Imagine de la autor.
Înlocuirea valorilor NULL cu 0
Poți folosi funcția COALESCE() pentru a înlocui valoarea NULL cu un fallback înainte de a apela REPLACE(), așa cum se arată mai jos.
-- Replace NULL with 'new' in the status column
SELECT
product_id,
product_name,
price,
REPLACE(COALESCE(status, 'NULL'), 'NULL', 0) AS updated_status
FROM Products;
Capcană: Dacă oricare argument transmis la REPLACE() este NULL, funcția returnează NULL pentru acel rând—chiar dacă celelalte argumente sunt valide. Încapsulează coloanele care pot fi nule în COALESCE() înainte de a apela REPLACE(), nu după.
Aplicații practice ale funcției SQL REPLACE()
Iată scenariile în care REPLACE() își merită locul în interogările de producție.
-
Curățarea datelor: Funcția
REPLACE()este utilă pentru curățarea datelor, eliminând și înlocuind caractere sau spații nedorite în șirurile dintr-un set de date. -
Transformarea datelor: Funcția
REPLACE()este folosită în transformarea datelor pentru a schimba valorile în alte formate și a înlocui valorile învechite cu unele noi. -
Gestionarea inputurilor utilizatorilor: Funcția
REPLACE()este importantă pentru ajustarea și conversia datelor introduse de utilizatori la un standard uniform acceptat într-o anumită bază de date. Această tehnică ajută la menținerea uniformității în baza de date. -
Standardizarea textului: Funcția
REPLACE()standardizează valorile din coloanele de tip șir pentru a asigura uniformitatea, de exemplu abrevieri în format cu litere mici sau mari. -
Înlocuire condițională: Funcția
REPLACE()este de asemenea utilă pentru practici simple de administrare a bazelor de date, pentru a înlocui valori conform unor reguli specifice.
Implementări specifice bazelor de date pentru REPLACE()
Bazele de date MySQL, PostgreSQL, Oracle și SQL Server acceptă toate funcția REPLACE() în SQL, care are o sintaxă similară în aceste sisteme.
-- Replace 'old' with 'new' in the status column
SELECT
product_id,
product_name,
price,
REPLACE(status, 'old', 'new') AS updated_status
FROM Products;
Considerații de performanță și bune practici pentru REPLACE()
Când folosești funcția REPLACE(), este important să ții cont de următoarele considerații de performanță și bune practici.
Impactul asupra performanței interogărilor
Funcția REPLACE() poate afecta performanța interogărilor, în special când se lucrează cu seturi de date mari. Această problemă apare deoarece funcția procesează tabelul pentru fiecare rând și interogarea poate dura mai mult la execuție.
Considerații privind indexarea
Indexează coloana pe care o interoghezi înainte de a rula REPLACE() într-o clauză WHERE sau într-un UPDATE. Fără index, baza de date scanează fiecare rând pentru a găsi potriviri—costisitor mai ales pe tabele mari.
Monitorizarea și rezolvarea blocajelor de performanță
Pentru a rezolva problemele de performanță ale interogărilor, ia în considerare următoarele bune practici:
-
Folosește instrumente de profilare a bazei de date pentru a monitoriza performanța interogărilor și a optimiza când lucrezi cu seturi de date mari.
-
Când folosești
REPLACE()pentru a modifica valori de tip șir, menține regulat indexurile pentru a te asigura că sunt aliniate. -
Inițiază procesarea în loturi pentru a reduce timpul de execuție al interogărilor când manipulezi seturi de date mari.
Pentru a învăța și alte funcții SQL avansate pentru transformarea datelor, îți recomand cursul DataCamp Învață SQL. Cursul Reporting in SQL acoperă, de asemenea, subiecte despre optimizarea bazelor de date, ajutându-te să înveți diferite tehnici de îmbunătățire a performanței.
Gânduri finale
Funcția REPLACE() acoperă majoritatea nevoilor de înlocuire a textului în bazele de date SQL. Ține cont de comportamentul pentru NULL—orice argument NULL returnează NULL—și verifică setările de collation ale bazei tale de date când contează sensibilitatea la majuscule.
Poți afla mai multe despre funcția REPLACE() în SQL urmând cursurile DataCamp Intermediate SQL și SQL Fundamentals. Îți recomand, de asemenea, parcursul de carieră Associate Data Analyst in SQL pentru a învăța mai mult despre aplicațiile SQL în transformarea datelor și pentru a-ți impulsiona cariera. În final, te încurajez să obții certificarea SQL Associate de la DataCamp pentru a-ți evidenția realizările profesionale în folosirea SQL pentru analiza datelor și pentru a te remarca la interviuri.
În cele din urmă, dacă ești interesat(ă) să afli mai multe despre diverse funcții SQL folosite în analiza datelor, îți recomand să consulți și alte tutoriale ale mele, inclusiv:
Întrebări frecvente
Ce este funcția SQL REPLACE()?
Funcția SQL REPLACE() înlocuiește sau modifică toate aparițiile unui subșir specificat cu un alt subșir.
Funcția REPLACE() este sensibilă la majuscule?
Funcția SQL REPLACE() este sensibilă la majuscule. Dacă lucrezi cu valori fără a ține cont de majuscule, trebuie să convertești șirul folosind funcțiile UPPER sau LOWER înainte de înlocuire.
Poate funcția REPLACE() în SQL să înlocuiască mai multe subșiruri?
Dacă vrei să înlocuiești mai multe subșiruri, folosește înlănțuiri de mai multe funcții REPLACE() în SQL.
Ce baze de date SQL acceptă funcția REPLACE()?
Toate bazele de date majore, inclusiv SQL Server, Oracle, PostgreSQL și MySQL, acceptă funcția SQL REPLACE().
Funcția SQL REPLACE() afectează performanța interogărilor?
Funcția REPLACE() în SQL poate afecta performanța interogărilor când lucrezi cu seturi de date mari. Pentru a îmbunătăți performanța, optimizează interogările și folosește indexarea adecvată.