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:

Ferit dedi ki...

Yazdığınız fonksiyon gerçekten işime çok yarıdı, Teşekkürler

Ömer GÖK dedi ki...

Daha farklı bir yöntem var mıydı acaba?

Diğer Yazılar