SQL Notları: String İşlemleri

MySQL, metin verileri üzerinde çeşitli işlemler yapmak için birçok fonksiyon sunar. Bu bölümde, MySQL'deki temel string işlemlerini ve bu işlemlerin nasıl kullanıldığını inceleyeceğiz.

### 1. **String Uzunluğu: `LENGTH()` ve `CHAR_LENGTH()`**

- **`LENGTH(str)`:** Stringin byte cinsinden uzunluğunu döner. UTF-8 gibi çok byte'lı karakter setlerinde, karakter sayısından farklı olabilir.
 
 **Örnek Kullanım:**
 ```sql
 SELECT LENGTH('föbbar'); -- 8
 ```

- **`CHAR_LENGTH(str)`:** Stringin karakter sayısını döner. UTF-8 gibi çok byte'lı karakter setlerinde bile doğru karakter sayısını verir.
 
 **Örnek Kullanım:**
 ```sql
 SELECT CHAR_LENGTH('föbbar'); -- 6
 ```

### 2. **Alt String Çıkarma: `SUBSTRING()`**

- **`SUBSTRING(str, start_position, length)`:** Belirtilen pozisyondan başlayarak belirli bir uzunlukta alt string döner.
 
 **Örnek Kullanım:**
 ```sql
 SELECT SUBSTRING('foobarbaz', 4, 3); -- 'bar'
 ```

 Negatif indeksleme de kullanılabilir:
 ```sql
 SELECT SUBSTRING('foobarbaz', -6, 3); -- 'bar'
 ```

### 3. **Büyük/Küçük Harf Dönüşümü: `UPPER()` ve `LOWER()`**

- **`UPPER(str)`:** Stringi büyük harfe çevirir.
 
 **Örnek Kullanım:**
 ```sql
 SELECT UPPER('fooBar'); -- 'FOOBAR'
 ```

- **`LOWER(str)`:** Stringi küçük harfe çevirir.
 
 **Örnek Kullanım:**
 ```sql
 SELECT LOWER('fooBar'); -- 'foobar'
 ```

### 4. **String Değiştirme: `REPLACE()`**

- **`REPLACE(str, from_str, to_str)`:** String içindeki belirli bir alt stringi başka bir string ile değiştirir.
 
 **Örnek Kullanım:**
 ```sql
 SELECT REPLACE('foobarbaz', 'bar', 'BAR'); -- 'fooBARbaz'
 ```

### 5. **String Birleştirme: `CONCAT()` ve `CONCAT_WS()`**

- **`CONCAT(str1, str2, ...)`:** Birden fazla stringi birleştirir.
 
 **Örnek Kullanım:**
 ```sql
 SELECT CONCAT('foo', 'bar', 'baz'); -- 'foobarbaz'
 ```

- **`CONCAT_WS(separator, str1, str2, ...)`:** Birden fazla stringi belirtilen bir ayraç ile birleştirir.
 
 **Örnek Kullanım:**
 ```sql
 SELECT CONCAT_WS('-', 'foo', 'bar', 'baz'); -- 'foo-bar-baz'
 ```

### 6. **String Arama: `FIND_IN_SET()`**

- **`FIND_IN_SET(str, strlist)`:** Bir stringin, virgülle ayrılmış bir string listesindeki pozisyonunu döner. Bulunamazsa 0 döner.
 
 **Örnek Kullanım:**
 ```sql
 SELECT FIND_IN_SET('b', 'a,b,c'); -- 2
 SELECT FIND_IN_SET('d', 'a,b,c'); -- 0
 ```

### 7. **String Ters Çevirme: `REVERSE()`**

- **`REVERSE(str)`:** Stringi ters çevirir.
 
 **Örnek Kullanım:**
 ```sql
 SELECT REVERSE('foobar'); -- 'raboof'
 ```

### 8. **String Trimleme: `TRIM()`, `LTRIM()`, `RTRIM()`**

- **`TRIM(str)`:** Stringin başındaki ve sonundaki boşlukları kaldırır.
 
 **Örnek Kullanım:**
 ```sql
 SELECT TRIM('  foobar  '); -- 'foobar'
 ```

- **`LTRIM(str)`:** Stringin başındaki boşlukları kaldırır.
 
 **Örnek Kullanım:**
 ```sql
 SELECT LTRIM('  foobar'); -- 'foobar'
 ```

- **`RTRIM(str)`:** Stringin sonundaki boşlukları kaldırır.
 
 **Örnek Kullanım:**
 ```sql
 SELECT RTRIM('foobar  '); -- 'foobar'
 ```

### 9. **String Formatlama: `FORMAT()`**

- **`FORMAT(number, decimal_places)`:** Bir sayıyı belirtilen ondalık basamak sayısına göre formatlar.
 
 **Örnek Kullanım:**
 ```sql
 SELECT FORMAT(123456.789, 2); -- '123,456.79'
 ```

### 10. **String Padleme: `LPAD()` ve `RPAD()`**

- **`LPAD(str, length, pad_str)`:** Stringi belirtilen uzunluğa kadar sol tarafa belirtilen string ile doldurur.
 
 **Örnek Kullanım:**
 ```sql
 SELECT LPAD('foobar', 10, 'x'); -- 'xxxxfoobar'
 ```

- **`RPAD(str, length, pad_str)`:** Stringi belirtilen uzunluğa kadar sağ tarafa belirtilen string ile doldurur.
 
 **Örnek Kullanım:**
 ```sql
 SELECT RPAD('foobar', 10, 'x'); -- 'foobarxxxx'
 ```

---

Bu bilgilerle, MySQL'de string işlemlerini nasıl gerçekleştireceğinizi daha iyi anlayabilirsiniz. Bir sonraki yazıda, tarih ve saat işlemleri gibi daha gelişmiş SQL konularına değineceğiz.

 

Önceki Yazı
SQL Notları: Tarih ve Saat İşlemleri

MySQL'de tarih ve saat işlemlerini nasıl gerçekleştireceğinizi daha iyi anl...

Sonraki Yazı
SQL Notları: JOIN ve UNION Kullanımı

MySQL'de `JOIN` ve `UNION` ifadelerinin farklı kullanım senaryolarını ve ipu...