Sorguda büyük küçük karakter problemi

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Sorguda büyük küçük karakter problemi

Mesaj gönderen serbek_tr »

S.A. arkadaşlar;

Navicat veya SQLyog gibi yönetim programlarında yaptığım sorgu hiç bir problem vermez iken delphide kodladığım sorgu aynı sonucu vermiyor hatam yada eksiğim ne olabilir. Mysql bağlantısı için kullandığım bileşen Mydac.

Kod: Tümünü seç

Select * from t_databaseX where adi like 'A%'
bu şekilde yazdığım kod bahsettiğim yönetim programlarında hem 'a' hemde 'A' ile başlayan sonuçları içeriyor ama delphi tarafında sadece A ile başlayanlar geliyor 'a' lar buna dahil değil. genelde insanların türkçe karakter problemi olurdu ama ben küçük büyük karakter problemi yaşıyorum.
Database dil yapısı utf8 ve collation utf8_general_ci(case insensitive) bu problem büyük ihtimal ile ya bağlantı bileşeninde yada benim kod yapımda ama delphi tarafında da yukarda gördüğünüz kodu kullanıyorum. Yardımlarınızı rica ediyorum
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Sorguda büyük küçük karakter problemi

Mesaj gönderen aslangeri »

a.s.
muhtemelen kullanıdığınız diğer programlar sorgulama yapmadan önce sorgulamada kullanılan alan ve sorguda gönderilen değeri küçük/büyük harfe çeviriyordur. bundan dolayı büyük küçük harf problemi olmuyordur.
sizde aynı yöntemi kullanın bence.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Re: Sorguda büyük küçük karakter problemi

Mesaj gönderen serbek_tr »

Alakanızdan dolayı teşekkür ederim. Ancak onu denedim onun çözüm olacağını sanmıyorum çünkü ben sorguda küçük harf gönderdiğim zaman bu defa sadece küçük a ile başlayanlar geliyor ve büyük A ile başlayanlar listelenmiyor. Yeni database içinde kayıtlı bilgi hem ahmet hemde Ahmet yada AHMET olabilir delphi tarafındaki sorguda sadece ne aradıysan ona cevap veriyor. Yani dğer programlar sorgudaki alanları ve sorguda aranan metni küçük harfe çevirse bile büyük harf ile başlayanlarda geliyor.
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Re: Sorguda büyük küçük karakter problemi(Çözüldü!!!)

Mesaj gönderen serbek_tr »

Tamam arkadaşlar sorunu çözdüm.
Daha doğrusu etkisi ne derece doğrudur bilmiyorum ama yeni bir database oluşturdum ve utf8 Collation utf8_general_ci yaptım eski tablodaki bilgileri aktardım ve sorgu doğru sonuç verdi. ama daha önceden de yapıyı bu şekilde ayarlamıştım. Bu şekilde bir yapı değişikliğine ne sebep olabilir hiç bir bilgim yok ama yaptığım şey bu paylaşmak istedim ve oldu. Yorum getirebilen varsa paylaşmasını isterim en azından bu sorunlara ne gibi şeylerin etki ettiği konusunda bilgimiz olur. Herkese teşekkür ederim.
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Sorguda büyük küçük karakter problemi

Mesaj gönderen aslangeri »

s.a.
sorununu halletmene sevindim.
ancak benim mesajımı ya anlamadın yada anlatamadım.
şöyleki:
aslangeri yazdı:....sorgulamada kullanılan alan ve sorguda gönderilen değeri..
yani kodunuzu aşağıdaki gib değiştirin demek istedim.

Kod: Tümünü seç

Select * from t_databaseX where upper(adi) like upper('A%')
bu şekilde yapınca veritabanında ister küçük olsun ister büyük upper(a) ile büyük harfe cevriliyor sonucta hepsi "AHMET" oluyor. aynı işlemi like daki parametreyede uygulayınca sorun çözülmüş oluyor.
karşılaştığınız her veritabanının ayarlarını değiştiremezsiniz. :wink:
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Sorguda büyük küçük karakter problemi

Mesaj gönderen mkysoft »

UTF8'de sıralama problemi yaşayabilirsiniz. türkçe harfler doğru konumda sıralanmıyor. bir önceki öneriyi uygulamanızı tavsiye ederim.
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Re: Sorguda büyük küçük karakter problemi

Mesaj gönderen serbek_tr »

Aslangeri arkadaşım haklısın seni anlamamışım. Sorunumu çözdüm ama tavsiyeni de denedim haklısın olumlu sonuç aldım çünkü her ne yaparsam bir önceki yapımı mutlaka muhafaza ederim onun üzerinde söylediğin şekilde çalıştı. Anlaşılamama noktasına gelince insanlar her nekadar düzgün cümleler kursada düşüncelerini yazıya tam olarak aktaramıyor bu ikimiz içinde söz konusu olabilir. Yardımların teşekkür ederim.
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
m_yaprakci

Re: Sorguda büyük küçük karakter problemi

Mesaj gönderen m_yaprakci »

Select * from t_databaseX where upper(adi) like upper('A%')
bu uft8 vb veritabanı karakter setlerinde İ,ı,i vb karakterlerde hatalı davranmaya sebep olur. yani küçük i upper edildiğinde buyuk I'ya dnüşür gibi...

bunun yerine türkçe yazılımlarda MYSQL ve türevleri için LATIN5 - latin5_turkish_ci karakter kodlaması kullanılmalıdır ki büyük küçük harf duyarsız sorgulamalar yapabilelim ve sql kodları uzerinden hiç amelelik yapmadan işi götürelim.
latin5_turkish_ci olan bir veritabanında yukarıdaki upper kodu kesinlikle problemsiz çalışır.

mssql'de ise yanlış hatırlamıyorsam TURKISH_CI_AS karakter kodu (collation) kullanılıyordu.
Cevapla