Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Önermiyorum - 9 (MySQL'de ALTER komutunun olmaması)
#1
MySQL'de ALTER komutunun olmaması (stored procedure'ler için) bence hiç de iyi değil. Sürekli olarak, DROP/CREATE ikilisini kullanıyoruz.

Bir de dikkat etmeniz gereken bir durum var. Diyelim ki tablonuzda iki VARCHAR türlü alan var ve siz SELECT ederken bu alanları yanyana görebileceğiniz yeni bir sanal alan oluşturmak istiyorsunuz:

  SELECT
    B.Alan1,
    B.Alan2,
    B.Alan1 + '-' + B.Alan2 AS BenimYeniAlanim
  FROM BenimTablom B;

Bu durumda hepimizin beklentisi Alan1 ve Alan2 'nin toplamı yani iki string ifadenin yanyana gelmesinden oluşan yeni string'in BenimYeniAlanim isimli alanda görüntülenmesi. Öyle değil mi ? Ancak dikkat edin, MySQL iki string ifadenin + simgesi ile toplamını sizin için DOUBLE'a çevirecek. Neden böyle bir şey yapar ? Neden her dilde olan string toplama MySQL'de çalışmaz ? MySQL'i yazan coder'ların kafası mı güzeldi ? Bunlar bilinmez, ama ben size yapması gereken işlevselliği sunan CONCAT fonksiyonunu önermek zorunda kalıyorum.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#2
Bence concat kullanmak daha sağlıklı forumlarda da şöyle bir bilgi var. Bu durum PostgreSQL içinde geçerli.
Eğer birleştirilecek parçalardan birisi null değeri almışsa + veya || operatörleri ile birleştirme sonucunda null değeri geliyor.
Fakat concat ile yaparsanız null bilgiyi emtpy string e çevirip diğer bilgileri birleştirip sonucu veriyor. Ayrıca concat için daha performanslı diyor.
select ' ali ' || ' veli ' || null;
select null || ' ali ' || ' veli ';
Bunların sonucu null veriyorken.
select concat(null, ' ali ', ' veli ');
Sonuç " ali  veli " şeklinde dönüyor.
http://www.dbafire.com/2015/07/09/what-i...#post-1361
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#3
Üstad, yeteneksizliği özellik olarak göstermeyelim lütfen. Diğer tüm dillerde + ile string birleştirme yapılabiliyor. Bunda da yapılabilmeli idi. NULL ile neyi toplarsanız toplayın elbette NULL değerini vermelidir. Bu gayet doğal bir durum. Alan Nullable ise kullanıcı kendi kontrolünü kendisi yapar bu durumda. (IFNULL, ISNULL vb.)

String alanların toplanmasından sonra ortaya çıkan alanın DOUBLE olması da neyin nesi !!

Not: Bir dil önce standartları karşılamalı, daha sonra kendisine has özelliklere yer vermelidir.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#4
(15-01-2019, Saat: 12:30)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: String alanların toplanmasından sonra ortaya çıkan alanın DOUBLE olması da neyin nesi !!

Bu konuda sonuna kadar haklısınız. Ya hata çıkar yada string sonuç getir. Double da nedir
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#5
Uğur bey'in MariaDB'deki denemesini bekleyelim. Bakalım MariaDB'de durum ne ahvalde ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#6
Maalesef, MariaDB'de de durum aynı.
Peyami Safa:"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır"
Can Yücel:"Toprak gibi olmalısın! Ezildikçe sertleşmelisin! Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı"
Sinan Canan:"Bildiğini zannettiğin an hiç bir şey öğrenemezsin"
WWW
Cevapla
#7
(15-01-2019, Saat: 13:43)uparlayan Adlı Kullanıcıdan Alıntı: Maalesef, MariaDB'de de durum aynı.

Teşekkür ederim.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#8
Merhaba,
Tekrar teşekkürler @Tuğrul HELVACI hocam.
PostgreSQL'de bir trigger ile ad soyad alanını aşağıdaki gibi birleştiriyorum. Herhangi bir sorunla karşılaşmadım. 
new."ad_soyad" = new."ad" || ' ' || new."soyad";
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#9
Double mı yok artık Smile
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#10
Abi burda ne demek istedin ?

-MySQL'de ALTER komutunun olmaması bence hiç de iyi değil-
blog.yakupulutas.com
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MySQL Drop database Yetkisi yhackup 2 193 22-03-2019, Saat: 11:21
Son Yorum: yhackup
  MySQL Workbench Kod Tamamlama Hatası - (Code Completion) hi_selamlar 0 150 23-02-2019, Saat: 11:42
Son Yorum: hi_selamlar
  MySQL malformed trail byte or out of range char yhackup 5 327 31-01-2019, Saat: 09:55
Son Yorum: hi_selamlar
  Önermiyorum - 4 Tuğrul HELVACI 9 754 25-01-2019, Saat: 15:03
Son Yorum: yhackup
  Önermiyorum - 8 Tuğrul HELVACI 3 351 12-01-2019, Saat: 07:57
Son Yorum: Bay_Y



Konuyu Okuyanlar: 1 Ziyaretçi