hızlı hızlı yazdım tam kontrol şansım olmadı, test ettiğim kadarıyla sorun yok.
CREATE FUNCTION EK(
metin TEXT CHARSET UTF8,
tip ENUM('birlikte','aitlik','yonelme','belirtme','bulunma','ayrilma')
)
RETURNS TEXT CHARACTER SET UTF8
DETERMINISTIC
BEGIN
DECLARE Sep VARCHAR(3) CHARSET UTF8 DEFAULT "'";
DECLARE kalin_sesli CHAR(8) CHARSET UTF8 DEFAULT 'a,o,ı,u';
DECLARE ince_sesli CHAR(8) CHARSET UTF8 DEFAULT 'e,i,ü,ö';
DECLARE bharf CHAR(15) CHARSET UTF8 DEFAULT 'ç,f,h,k,s,ş,t,p';
DECLARE sesli CHAR(17) CHARSET UTF8 DEFAULT CONCAT_WS(',',kalin_sesli,ince_sesli);
DECLARE son_harf CHAR(1) CHARSET UTF8 DEFAULT RIGHT(RTRIM(metin),1);
DECLARE son_sesli VARCHAR(1) CHARSET UTF8 DEFAULT '';
DECLARE outp TEXT CHARSET UTF8 DEFAULT '';
SET @lowerm = LOWER(REPLACE(metin,'I','ı'));
SET @mlen = LENGTH(@lowerm);
WHILE @mlen>0 DO
IF (FIND_IN_SET(BINARY SUBSTRING(@lowerm FROM @mlen FOR 1),sesli)<>0) THEN
SET son_sesli = SUBSTRING(@lowerm FROM @mlen FOR 1);
SET @mlen := 0;
ELSE
SET @mlen := @mlen-1;
END IF;
END WHILE;
IF son_sesli='' THEN
RETURN metin;
END IF;
IF tip IN('birlikte','yonelme') THEN
IF FIND_IN_SET(BINARY son_sesli,kalin_sesli) THEN
SET @harf = 'a';
ELSE
SET @harf = 'e';
END IF;
SET @kharf = '';
IF FIND_IN_SET(son_harf,sesli) THEN
SET @kharf = 'y';
END IF;
SET outp = CONCAT(@kharf,IF(tip='birlikte','l',''),@harf);
ELSEIF tip IN('aitlik','belirtme') THEN
SET @kharf = '';
IF FIND_IN_SET(BINARY son_harf,sesli) THEN
SET @kharf = IF(tip='belirtme','y','n');
END IF;
SET @h1 = 'ieaıüöuo';
SET @h2 = 'iiııüüuu';
SET @h = SUBSTRING(@h2 FROM LOCATE(son_sesli,@h1) FOR 1);
SET outp = CONCAT(@kharf,@h,IF(tip='belirtme','','n'));
ELSEIF tip IN('bulunma','ayrilma') THEN
SET @bharf = 'd';
IF FIND_IN_SET(BINARY son_harf,bharf) THEN
SET @bharf = 't';
END IF;
SET @harf = 'e';
IF FIND_IN_SET(BINARY son_sesli,kalin_sesli) THEN
SET @harf = 'a';
END IF;
SET outp = CONCAT(@bharf,@harf,IF(tip='ayrilma','n',''));
ELSE
RETURN 'bilinmeyen ek';
END IF;
RETURN CONCAT(metin,Sep,outp);
END;sql > SELECT EK("ayşe fatma","birlikte"),EK("ayşe fatma","aitlik"),EK("ayşe fatma","yonelme"),EK("ayşe fatma","belirtme"),EK("ayşe fatma","bulunma"),EK("ayşe fatma","ayrilma")
Showing rows 0 - 0 ( 1 total, Query took 0.0026 sec)
EK("ayşe fatma","birlikte")
EK("ayşe fatma","aitlik")
EK("ayşe fatma","yonelme")
EK("ayşe fatma","belirtme")
EK("ayşe fatma","bulunma")
EK("ayşe fatma","ayrilma")
ayşe fatma'yla
ayşe fatma'nın
ayşe fatma'ya
ayşe fatma'yı
ayşe fatma'da
ayşe fatma'dan
--R10.NET; Flood Engellendi -->-> Yeni yazılan 05-05-2015 mesaj 00:10:57 -->-> Daha önceki 04-05-2015 mesaj 22:32:47 --
kullandığım fonk. dan ötürü kaynaklanan case sensitivity hatası varmış düzelttim ve test ettim.
elimde kişiler tablosu olmadığından iller tablosunda testi gerçekleştirdim.
ek konusuyla yapacaklarım bu kadar herkese iyi çalışmalar.
https://www.imageupload.co.uk/images...05/04/zzzz.jpg