Mysql'de Tüm Kelimelerin Baş Harfleri Büyültmek
-
Arkadaşlar merhabalar,
Sql de bir tablomda ürünler var ( 64k kadar ) , bunların isimleri girişleri yapılırken büyük küçük harf rastgele girilmiş. Ben bunları mysql tarafında hepsinin baş harfi büyük kalanları küçük harfli yapmak istiyorum.
Elimdeki string böyle :
"samsung galaxy note 4 n910 orj orta kasa arka kapak beyaz"
Ben bunu şu hale getirmek istiyorum;
"Samsung Galaxy Note 4 N910 Orj Orta Kasa Arka Kapak Beyaz"bulduğum bazı fonksiyonlar var ama bunları da açıkçası çalıştıramadım, şu mesela https://paste.ee/p/0miwQ
Durum böyle arkadaşlar, yardımlarınızı rica ederim. -
DELIMITER || CREATE FUNCTION `UC_Words`( str VARCHAR(255) ) RETURNS VARCHAR(255) CHARSET utf8 BEGIN DECLARE c CHAR(1); DECLARE s VARCHAR(255); DECLARE i INT DEFAULT 1; DECLARE BOOL INT DEFAULT 1; DECLARE punct CHAR(17) DEFAULT ' ()[]{},.-_!@;:?/'; SET s = LCASE( str ); WHILE i < LENGTH( str ) DO BEGIN SET c = SUBSTRING( s, i, 1 ); IF LOCATE( c, punct ) > 0 THEN SET BOOL = 1; ELSEIF BOOL=1 THEN BEGIN IF c >= 'a' AND c <= 'z' THEN BEGIN SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1)); SET BOOL = 0; END; ELSEIF c >= '0' AND c <= '9' THEN SET BOOL = 0; END IF; END; END IF; SET i = i+1; END; END WHILE; RETURN s; END || DELIMITER ;
bu fonksiyonu ekle, sonra : SELECT UC_Words(title) FROM `products`;
seklinde çek, denedim localde çalışıyor
kaynak : https://stackoverflow.com/questions/4263272/capitalize-first-letter-mysql
-
Teşekkür ederim dostum çalıştı :)
nevorapat bunu yazdıDELIMITER || CREATE FUNCTION `UC_Words`( str VARCHAR(255) ) RETURNS VARCHAR(255) CHARSET utf8 BEGIN DECLARE c CHAR(1); DECLARE s VARCHAR(255); DECLARE i INT DEFAULT 1; DECLARE BOOL INT DEFAULT 1; DECLARE punct CHAR(17) DEFAULT ' ()[]{},.-_!@;:?/'; SET s = LCASE( str ); WHILE i < LENGTH( str ) DO BEGIN SET c = SUBSTRING( s, i, 1 ); IF LOCATE( c, punct ) > 0 THEN SET BOOL = 1; ELSEIF BOOL=1 THEN BEGIN IF c >= 'a' AND c <= 'z' THEN BEGIN SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1)); SET BOOL = 0; END; ELSEIF c >= '0' AND c <= '9' THEN SET BOOL = 0; END IF; END; END IF; SET i = i+1; END; END WHILE; RETURN s; END || DELIMITER ;
bu fonksiyonu ekle, sonra : SELECT UC_Words(title) FROM `products`;
seklinde çek, denedim localde çalışıyor
kaynak : https://stackoverflow.com/questions/4263272/capitalize-first-letter-mysql
-
bu verileri güncellemiyor ama sanırım, sadece çekerken fonksiyon belirli bir formata sokuyor. Php ile select + update yapabilirsin?
-
end bunu yazdı
bu verileri güncellemiyor ama sanırım, sadece çekerken fonksiyon belirli bir formata sokuyor. Php ile select + update yapabilirsin?
Update tablo set kolon = UC_Words(kolon) işe yarar hocam