https:/www.high-endrolex.com/40
https:/www.high-endrolex.com/40
https:/www.high-endrolex.com/40
MySQL için split fonksiyonu – BT Hayat
https:/www.high-endrolex.com/40

MySQL için split fonksiyonu

Excel’den aldığım bir veriyi hazırladığım bir tabloya aktarmam gerekiyordu. Tablomda ad ve soyad sütunları ayrı ayrı olacak şekilde tasarlanmıştı ama aktarmak istediğim Excel dosyasında isim olarak tek sütun vardı.

İlk iş olarak Excel dosyasını phpmyadmin yardımıyla komple bir tablo olarak veritabanına yükledim. Aktarma için kaynak tablodan select yapıp hedef tabloya insert uygulayacaktım ama bu ad, soyad sütunlarının ayrı ayrı olması işi biraz bozdu. Kaynak tablodan select yaparken isim sütunundaki veriyi kelimeler arasındaki boşluklardan yakalayıp ad ve soyadını soyadını ordan ayrı ayrı yakalamak icab ediyordu.

PHP’de bu tarz bir parçalama işlemini explode() fonksiyonu ile yapmaya alışmış biri olarak keşke MySQL’de de olsa diye düşündüm. MySQL’de yokmuş ama basit bir formülle kazandırılabiliyormuş. İşte MySQL için split fonksiyonu:

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       CHAR_LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');

Bu fonksiyonu şu şekilde kullanabiliyoruz:

select split_str(isim,’ ‘,1);

Yukarıdaki select ifadesinde isim hanesini boşluklarından ayırmasını ve ilk kelimeyi yazmasını sağlamış olduk.

One thought on “MySQL için split fonksiyonu”

  1. Bu fonksiyondaki LENGTH() fonksiyonu Türkçe özel karakterler gibi çift baytlı karakterlerde problem oluşturuyordu. Sorunu gidermek için LENGHT() yerine CHAR_LENGTH() fonksiyonu kullanıldı.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

https:/www.high-endrolex.com/40
https:/www.high-endrolex.com/40