Türkçe
PostgreSQL ve Türkçe
PostgreSQL 8.1.3 Win32 sürümü, Türkçe karakter desteklemez. Yalnızca ORDER BY sıralamalarını doğru yapar. Esasında bu genelde yeterlidir. Her ne kadar, UPPER() ve LOWER() fonksiyonları Türkçe karakter desteklemese de, bu fonksiyonların eşleniklerini kendi fonksiyonlarınızı kullanabilirsiniz. Mesela UPPER() fonksiyonu yerine TUPPER() fonksiyonunu geliştirebilirsiniz. Bunu yapmak için, şu komutu PL/PGSQL komutunu kullanabilirsiniz:CREATE OR REPLACE FUNCTION cms_1_tr.tupper("varchar")
RETURNS "varchar" AS
$BODY$
BEGIN
RETURN UPPER(TRANSLATE($1,'ıi','Iİ'));
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Buradaki "cms_1_tr", şemanızın adıdır ("public" yazabilirsiniz siz). Eğer, "plpgsql dili kayıtlı değil" gibi bir hata oluşursa, öncelikle, CREATE LANGUAGE komutunu kullarak, dili oluşturmanız gerekecektir. Sorunsuz şekilde çalıştıktan sonra, artık SQL ifadelerinizde UPPER() yazdığınız yerlere TUPPER() yazarak sorununuzu çözebilirsiniz:
SELECT tupper(adi), tupper(soyadi) FROM cms_1_tr.kisiler;
gibi. SQL ifadelerinizdeki LIKE komutlarınızın büyük/küçük ayrımı yapmamasını sağlamak için, PostgreSQL'de ILIKE komutunu kullanabilirsiniz. Fakat maalesef, bu komut da Türkçe karakter desteklemez. Bunun için benim önerebileceğim bir telafi yolu yok. Sizin varsa yorum yazabilirsiniz.
Not 1) PostgreSQL'in hiçbir Linux/Unix sürümünde, Türkçe karakter sorunu yoktur.
Not 2) Oracle Windows sürümünün UPPER() fonksiyonlarında da aynı Türkçe karakter sorunu vardır. Yine aynı yolla çözmüştük. Linux sürümünde durum nedir bunu bilmiyorum (Bu konuda bir bilgisini paylaşmak isteyen varsa yorum yazabilir)
2 yorum:
Yazdığınız fonksiyon gerçekten işime çok yarıdı, Teşekkürler
Daha farklı bir yöntem var mıydı acaba?
Yorum Gönder