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ı.
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
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";
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-
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MySQL - Sql-mode only_full_group_by hatası. hi_selamlar 5 1.682 25-12-2022, Saat: 10:43
Son Yorum: hi_selamlar
  MySQL Bağlantı Sorunu - MEB akıllı tahta Frrst 6 1.386 10-11-2022, Saat: 23:16
Son Yorum: mcuyan
  Mysql Farklı bir autoinc mcuyan 11 1.919 09-11-2022, Saat: 23:05
Son Yorum: mcuyan
  Delphi 7 MySql DAC Nasıl Kurulur mahone 1 604 08-10-2022, Saat: 22:09
Son Yorum: mcuyan
  mysql trigger subquery returns more than 1 row hatası cvheneburi 5 1.998 28-08-2022, Saat: 01:04
Son Yorum: cvheneburi



Konuyu Okuyanlar: 1 Ziyaretçi