Program
SQL REPLACE() fonksiyonu, bir dizgenin bir bölümünü belirtilen başka bir alt dizgeyle değiştirebildiği için metin işleme açısından kullanışlıdır. Çoğu durumda SQL REPLACE() fonksiyonu, verilen bir veri kümesindeki bir dizge içinde bulunan tüm alt dizge oluşumlarını değiştirmek için kullanılır.
Metin işleme, verileri verimli analiz için temizleyip dönüştürmeye yardımcı olduğundan SQL'de önemlidir. Bu eğitimde, nasıl kullanacağınızı göstereceğim.
Geleceğin bir veri bilimcisi ya da veri mühendisi iseniz, veri dönüşümünde SQL fonksiyonlarının temellerini anlamak için DataCamp’in Introduction to SQL kursunu almanızı öneririm. Konuyu daha derinlemesine incelerken temel kavramları gözden geçirmek için SQL metin (string) fonksiyonlarına ilişkin rehberimize de göz atmalısınız.
Kısa Özet
-
REPLACE(string, old_substring, new_substring)tek çağrıda bir alt dizgenin geçtiği her yeri değiştirir -
Birden çok alt dizgeyi değiştirmek için çağrıları zincirleyin:
REPLACE(REPLACE(col, 'a', 'b'), 'c', 'd') -
Karakterleri kaldırmak için boş bir dizge geçin:
REPLACE(phone, '-', '') -
Herhangi bir argüman
NULLise, fonksiyon o satır içinNULLdöndürür -
Büyük/küçük harf duyarlılığı veritabanınıza ve karşılaştırma (collation) ayarına bağlıdır—SQL Server ve MySQL varsayılan olarak duyarsızdır; PostgreSQL varsayılan olarak duyarlıdır
SQL REPLACE() Fonksiyonunu Anlamak
SQL'de REPLACE() fonksiyonu, bir sütunda belirtilen alt dizgeyi ya da dizgeyi arar ve onu başka bir verilen dizgeyle değiştirir. Aşağıdaki örnek, REPLACE() fonksiyonunun temel kullanımını gösterir. Fonksiyondaki argümanlar şunlardır:
-
string: Değiştirmenin yapılacağı özgün dizge. -
old_substring: Değiştirilecek alt dizge. -
new_substring: Eskisinin yerine geçecek alt dizge.
REPLACE(string, old_substring, new_substring)
Bir tablodaki dizgeleri değiştirmek için REPLACE() fonksiyonunu kullanırken, sorgu aşağıdaki sözdizimine sahip olacaktır; burada:
-
column_name: Alt dizge oluşumlarının aranacağı sütun. -
old_substring: Değiştirilecek alt dizge. -
new_substring: Eskisinin yerine geçecek alt dizge.
-- 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;
REPLACE() Örneği
SQL REPLACE() fonksiyonu, tüm dize oluşumlarını belirtilen bir alt dizge veya dizgeyle değiştirir. Aşağıdaki örnekte, SQL'deki REPLACE() fonksiyonu açıklama sütununda old değerini new ile değiştirmiştir. Sorgu, eski dizgeyi yenisiyle değiştirmek için her satırı çalıştıracaktır.
-- 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: MySQL, PostgreSQL, Oracle ve SQL Server veritabanlarının tümü REPLACE() fonksiyonunu destekler.
SQL'de REPLACE() Kullanım Senaryoları
SQL REPLACE() fonksiyonunun metin işleme ve veri dönüştürmede birçok önemli kullanım senaryosu vardır. Bunlar şunları içerir:
Temel değiştirme
Basit bir değiştirme yapmak için SQL REPLACE() fonksiyonunu kullanabilirsiniz. SQL Server veritabanımızda aşağıdaki tabloya sahip olduğumuzu varsayalım:
Products tablosu örneği. Görsel: Yazar.
Aşağıdaki SQL sorgusunu kullanarak, REPLACE() fonksiyonuyla old durumunu new olarak değiştirebilirsiniz.
SELECT
product_id,
product_name,
price,
REPLACE(status, 'old', 'new') AS updated_status
FROM Products;
Ortaya çıkan tablo aşağıda gösterildiği gibi olacaktır.

SQL REPLACE() ile güncellenmiş tablo. Görsel: Yazar.
Birden çok alt dizgeyi değiştirme
Birden çok alt dizgeyi değiştirmek isterseniz, birden fazla REPLACE() fonksiyonunu zincirleyin. Burada old değerini outdated ve new değerini fresh ile güncelliyoruz.
-- 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;
Ortaya çıkan tablo aşağıda gösterilmiştir.

Birden çok alt dizge kullanılarak güncellenen tablo. Görsel: Yazar.
Karakterleri kaldırma
Karakterleri tamamen kaldırmak için üçüncü argüman olarak boş bir dizge geçin. Bu, bir sütundan noktalama işaretlerini, fazladan boşlukları veya biçimlendirme karakterlerini temizlemenin en pratik yoludur.
-- Remove dashes from phone numbers
SELECT
customer_id,
REPLACE(phone_number, '-', '') AS clean_phone
FROM Customers;
Örneğin, '555-867-5309' değeri '5558675309' olur. Aynı teknik, içe aktarılan verilerdeki özel karakterleri, kodlama artıklarını veya istenmeyen boşlukları kaldırır.
Büyük/küçük harf duyarlılığını yönetme
REPLACE() fonksiyonunda büyük/küçük harf duyarlılığı veritabanınıza ve karşılaştırma (collation) ayarına bağlıdır. PostgreSQL varsayılan olarak duyarlıdır; dolayısıyla REPLACE(col, 'Old', 'New'), 'old' ile eşleşmez. SQL Server ve MySQL, sütunun veya veritabanının karşılaştırma ayarını izler—çoğu varsayılan kurulum büyük/küçük harf duyarsız karşılaştırma kullanır; bu nedenle REPLACE() harften bağımsız eşleşir.
Büyük/küçük harfe duyarsız değerleri değiştirmek istediğinizde, değiştirmeden önce metni dönüştürmek için UPPER() veya LOWER() fonksiyonlarını kullanmalısınız. Bu teknik, değerlerin tutarlı kalmasını sağlar.
-- 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;

REPLACE() ve UPPER() fonksiyonları kullanılarak güncellenen tablo. Görsel: Yazar.
-- 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;

SQL REPLACE() ve LOWER() fonksiyonları kullanılarak güncellenen tablo. Görsel: Yazar.
İleri Düzey Teknikler
Bu teknikler, basit bul-değiştir mantığının ötesindeki ikameleri ele almak için REPLACE() fonksiyonunu diğer SQL fonksiyonlarıyla birleştirir.
Dinamik değerlerle değiştirme
REPLACE() fonksiyonu, diğer SQL fonksiyonlarının bir kombinasyonunu kullanarak dinamik değiştirmeler yapmak için kullanılabilir. Örneğin, REPLACE() fonksiyonunu kullanarak bir alt dizgeyi değiştirmek için başka bir sütunun değerini kullanabilirsiniz. Aşağıdaki örnekte, REPLACE() fonksiyonu her eski ürünü product_name alanındaki gerçek değerle değiştirir.
-- 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;

REPLACE() fonksiyonu ve dinamik değerler kullanılarak güncellenen tablo. Görsel: Yazar.
UPDATE ifadelerinde REPLACE() kullanma
SQL REPLACE() fonksiyonu, bir veya daha fazla satır genelinde sütun değerlerini değiştirmek için UPDATE ifadelerinin içinde çalışır. Aşağıdaki sorgu, status sütununda old değerini outdated ile günceller.
-- Update the status column to replace 'old' with 'outdated'
UPDATE Products
SET status = REPLACE(status, 'old', 'outdated')
WHERE status LIKE '%old%';
Bir tabloyu başka bir tabloyla birleştirerek güncelleme gibi daha karmaşık senaryolar için JOIN ile SQL UPDATE eğitimimize bakın.
REPLACE()’i diğer metin fonksiyonlarıyla birleştirme
İleri düzey tekniklerden biri, dize değerlerini değiştirirken diğer SQL metin (string) fonksiyonları olan CHARINDEX() veya SUBSTRING() ile REPLACE()’i birleştirmektir.
-- 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;
Yukarıdaki sorgunun ortaya çıkardığı tablo aşağıda gösterilmiştir.

REPLACE() ve diğer metin fonksiyonları kullanılarak güncellenen tablo. Görsel: Yazar.
NULL değerini 0 ile değiştirme
REPLACE() çağrılmadan önce geri dönüş değeri olarak NULL değerini değiştirmek için COALESCE() fonksiyonunu kullanabilirsiniz; aşağıda gösterildiği gibi.
-- 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;
Tuzağa dikkat: REPLACE()'e iletilen argümanlardan herhangi biri NULL ise, fonksiyon o satır için NULL döndürür—diğer argümanlar geçerli olsa bile. REPLACE()’i çağırmadan önce, null olabilecek sütunları COALESCE() içine alın; sonra değil.
SQL REPLACE() Fonksiyonunun Pratik Uygulamaları
REPLACE()’in üretim sorgularında yerini aldığı senaryolar şunlardır.
-
Veri temizleme:
REPLACE()fonksiyonu, bir veri kümesindeki dizgilerde istenmeyen karakterleri veya boşlukları kaldırma ve değiştirme için kullanışlıdır. -
Veri dönüşümü:
REPLACE()fonksiyonu, değerleri farklı biçimlere dönüştürmek ve eski değerleri yenileriyle değiştirmek için veri dönüşümünde kullanılır. -
Kullanıcı girdilerini ele alma:
REPLACE()fonksiyonu, kullanıcı girdilerini belirli bir veritabanında kabul edilen tekdüze bir standarda uyarlamak ve dönüştürmek için önemlidir. Bu teknik, veritabanında tutarlılığı sağlamaya yardımcı olur. -
Metin standartlaştırma:
REPLACE()fonksiyonu, örneğin kısaltmaların küçük veya büyük harfle yazımı gibi, dizge sütunlarındaki değerleri tekdüze hale getirir. -
Koşullu değiştirme:
REPLACE()fonksiyonu, belirli kurallara göre değerleri değiştirmek için kolay veritabanı yönetimi uygulamalarında da kullanışlıdır.
REPLACE()’in Veritabanına Özgü Uygulamaları
MySQL, PostgreSQL, Oracle ve SQL Server veritabanlarının tümü SQL'de REPLACE() fonksiyonunu destekler; bu veritabanlarında sözdizimi benzerdir.
-- Replace 'old' with 'new' in the status column
SELECT
product_id,
product_name,
price,
REPLACE(status, 'old', 'new') AS updated_status
FROM Products;
REPLACE() Performans Hususları ve En İyi Uygulamalar
REPLACE() fonksiyonunu kullanırken, aşağıdaki performans hususlarını ve en iyi uygulamaları göz önünde bulundurmak önemlidir.
Sorgu performansına etkisi
REPLACE() fonksiyonu, özellikle büyük veri kümeleriyle çalışırken sorgu performansını etkileyebilir. Bu durum, fonksiyonun tabloyu her satır için güncellemesinden ve sorgunun çalışmasının zaman alabilmesinden kaynaklanır.
Dizinleme ile ilgili hususlar
WHERE koşulunda veya UPDATE içinde REPLACE() çalıştırmadan önce, sorguladığınız sütunu dizinleyin. Dizin olmadan veritabanı eşleşmeleri bulmak için her satırı tarar—özellikle büyük tablolarda maliyetlidir.
Performans darboğazlarını izleme ve giderme
Sorgu performansıyla ilgili sorunları gidermek için şu en iyi uygulamaları dikkate almak önemlidir:
-
Büyük veri kümelerini işlerken sorgu performansını izlemek ve optimize etmek için veritabanı profilleme araçlarını kullanın.
-
Dize değerlerini değiştirmek için
REPLACE()kullandığınızda, dizinlerin eşleştiğinden emin olmak için düzenli olarak bakım yapın. -
Büyük veri kümeleriyle çalışırken sorgu yürütme süresini azaltmak için toplu işlemeyi başlatın.
Veri dönüşümü için diğer ileri düzey SQL fonksiyonlarını öğrenmek üzere DataCamp’in Learn SQL kursunu almanızı öneririm. Reporting in SQL kursu da veritabanı optimizasyonu konularını kapsar ve performansı optimize etmenin farklı tekniklerini öğrenmenize yardımcı olur.
Son düşünceler
REPLACE() fonksiyonu, SQL veritabanlarında çoğu metin ikame ihtiyacını karşılar. NULL davranışını aklınızda tutun—herhangi bir NULL argüman NULL döndürür—ve büyük/küçük harf duyarlılığı önemli olduğunda veritabanınızın karşılaştırma ayarlarını doğrulayın.
SQL'de REPLACE() fonksiyonu hakkında daha fazla bilgi edinmek için DataCamp’in Intermediate SQL ve SQL Fundamentals kurslarını alabilirsiniz. Ayrıca, SQL’in veri dönüşümündeki uygulamaları hakkında daha fazla bilgi edinmek ve kariyerinize hızlı bir başlangıç yapmak için Associate Data Analyst in SQL kariyer yolunu öneririm. Son olarak, SQL’i veri analizi için kullanmadaki profesyonel başarınızı sergilemenize ve iş görüşmelerinde öne çıkmanıza yardımcı olması için DataCamp’in SQL Associate Certification sertifikasını almanızı tavsiye ederim.
Son olarak, veri analizinde kullanılan çeşitli SQL fonksiyonları hakkında daha fazla bilgi edinmekle ilgileniyorsanız, aşağıdaki diğer eğitimlerime de göz atmanızı öneririm:
Frequently Asked Questions
SQL REPLACE() fonksiyonu nedir?
SQL REPLACE() fonksiyonu, belirtilen bir alt dizgenin tüm oluşumlarını başka bir alt dizgeyle değiştirir veya bunları değiştirir.
REPLACE() fonksiyonu büyük/küçük harf duyarlı mıdır?
SQL REPLACE() fonksiyonu büyük/küçük harf duyarlıdır. Büyük/küçük harfe duyarsız değerleri ele alırken, değiştirmeden önce dizgeyi UPPER veya LOWER fonksiyonlarıyla dönüştürmeniz gerekir.
SQL'de REPLACE() fonksiyonu birden çok alt dizgeyi değiştirebilir mi?
Birden çok alt dizgeyi değiştirmek istiyorsanız, SQL'de birbirine zincirlenmiş birden fazla REPLACE() fonksiyonu kullanın.
Hangi SQL veritabanları REPLACE() fonksiyonunu destekler?
SQL Server, Oracle, PostgreSQL ve MySQL dahil tüm büyük veritabanları SQL REPLACE() fonksiyonunu destekler.
SQL REPLACE() fonksiyonu sorgu performansını etkiler mi?
SQL'deki REPLACE() fonksiyonu, büyük veri kümeleriyle çalışırken sorgu performansını etkileyebilir. Performansı iyileştirmek için sorguları optimize edin ve uygun dizinleme kullanın.

