In this question Mysql'in iki argüman alan bir işlevi olup olmadığını ve null
ilkini null
veya aksi takdirde ikinci argümanı döndürdüğünü sordum. Birisi yorum bölümünde böyle bir fonksiyonun bulunmadığını söyledi. Herhangi bir türden argüman alabileceğini ve dönüş değerinin null veya ikinci parametrenin aynı türünde olabileceğini düşünerek Mysql'deki bu işlevi nasıl tanımlayabilirim? Bu mümkün mü?Mysql - null olmayan değerlerin dönüştürülmesi bölüm 2
cevap
Bu sizin veya gereksinimlerinize göre mümkün değil.
Kayıtlı işlevlerin (SQL ile yazılmış) ve kullanıcı tanımlı işlevlerin (C dilinde yazılmış) argümanları ve dönüş değerleri statik olarak yazılmıştır.
Verilen, MySQL örtülü döküm ile oldukça esnektir, ancak değerler yine de yazılmıştır. Örtük döküm ile tamam olsanız bile, görünüşte açık olan çözümün tercih edilebileceği bir senaryo hayal etmek zordur.
IF(foo IS NULL,foo,bar)
amaçla yeterli ve doğru olarak yatan türlerini korumak ve foo tipi kaybedilecek olsa IF(foo IS NULL,NULL,bar)
, hemen hemen aynı şey olurdu olurdu (örneğin bir "Nasıl Bir BOŞ DATETIME var"). Sezgisel olarak açık olmayan nedenlerden dolayı bunları daha önce reddettiniz. Bir amaç, yerleşiklerle başarılabildiğinde, tekerleği yeniden icat etme motivasyonunun anlaşılması zordur.
İstediğim şey değil, yalnızca iki argüman alan bir işlev yapmak istiyorum ve sadece bu "if" işleviyle kullanılmam gerektiğini açıklıyorsunuz çünkü amacımı gerçekleştiremiyorum. Bunu yapmak istediğim nedeni oldukça basittir, şu durumda var: 'eğer (isNull (sale.id), null, 'bir satışla ilgili'), eğer (isNull (purchace.id), null, 'bir satın alma ile ilgili') ...), çünkü bu sorunun kapsamı dışında kalan bir nedenden ötürü bir ödeme bağlamı elde etmek için sol birleşme yapıyorum. – FtheBuilder
* Facepalm. * Neden böyle söylemediniz? Çözümünüz basit: 'sale.id SATIŞ SONRA NULL '' NEDEN SONRA NEDEN '' satın almayla ilgili '' NEREDE NEDEN OLDUĞUNU '' NEDEN SONRA '' komik kedi videoları 'END'le ilgili' ELSE 'ile ilgilidir. Bir "CASE" ifadesindeki ilk eşleşme sonucu belirler ... sadece COALESCE() 'nin NULL olmayan ilk argümanı gibi. Sen, arkadaşım, bizi gerçek problemden ziyade çözüm denemeni sormak için bizi bir klasik [XY problemine] (http://xyproblem.info) vermiş görünüyorsun. –
Yardım etme çabanı takdir ediyorum. Ben, 'null bağlamının kendisini sarmalamak' ve sadece Haskell'in düşüncesinin monad tarzı gibi spesifik olanı tedavi etmek istiyorum, tüm bu kalçayı, zaten düşündüğüm gösterdiğiniz herşeyi istemiyorum. Bu tür birleştirme (f (sale.id, 'satışla ilgili'), f (satın alma ile ilgili 'bir satın alma ile ilgili')) gibi çözebiliyor olsaydım.Buradaki herkes, Haskell Belki monadının yaptığı gibi sezgisel olarak tedavi etmek istediğim bir "boş" veya "yokluk" bağlamı olduğunu anlamamış, fakat ... SQL'de – FtheBuilder
bu deneyin: Daha fazla yaklaşık Comparison Functions and Operators ve Control Flow Functions
Select IF(ISNULL(arg1), null, arg2)
okuyun.
Çok fazla kireç taşı var ve ben daha önceki cevabımda önerdiğiniz yaklaşım hakkında zaten bir şey söyledim. Sorularımın gereksinimlerini yerine getirecek bir işlev olan "myFunction (x, y)" işlevini tanımlamak istiyorum, bu IF işlevini kullanmayın. – FtheBuilder
- 1. Mysql işlevi null olmayan değerleri dönüştürür
- 2. MySQL 5.5 bölüm tablosu, A-Z
- 3. mysql sırası, null, önce ve
- 4. XML serileştirme: Eksik öğenin null özellik değerine dönüştürülmesi
- 5. MySQL Cast NULL tamsayı 0
- 6. PHP mysql PDO NULL değeri
- 7. güncelleme bütün NULL alanlar MySQL
- 8. MySQL Query order by null
- 9. NULL vs DEFAULT NULL vs NULL DEFAULT NULL MYSQL sütun oluşturmada? sql tablo tanımı takiben
- 10. Python: Aynı değere sahip bir değişkene eşit olmayan bölüm
- 11. Varlık Çerçeve 5 DbUpdateException: için null değeri olmayan null üye
- 12. Alembic: IntegrityError: "sütun null değerleri içerir" null olmayan sütun
- 13. Varlık Framework Olmayan null sütun null varlık özelliği
- 14. SQL eksi 2 sütun null
- 15. Neden getiri garip bir tamsayı karması döndürüyor - bölüm 2?
- 16. UITableView Bölüm ilerleyiniz bölüm
- 17. MySQL Join, null e-posta sütunu değeri
- 18. Garip MySQL AVG() anomali NULL değerleri
- 19. HATA Statik yöntem null örneği gerektirir, statik olmayan yöntem null olmayan örnek gerektirir
- 20. Pandalar Nasıl Değiştirilir? NaN ile - standart olmayan eksik değerlerin işlenmesi
- 21. 2 satır + karşılaştırma Mysql
- 22. MYSQL Left Join NULL değerleri nasıl seçerim?
- 23. Bir null olmayan yabancı anahtar ekleme.
- 24. İki tabloyu null olmayan yabancı anahtarla birleştirmek?
- 25. JSON nesnesinde null olmayan alanı zorla
- 26. DEFAULT NULL ve CHECKBOX NULL mysql arasındaki fark nedir?
- 27. Bayt dizisinin png'ye dönüştürülmesi
- 28. data.frame'in atomik vektöre dönüştürülmesi
- 29. Ses Biçiminin Dönüştürülmesi
- 30. Bölüm üstbilgileriyle birlikte RealmBaseAdapter
'seçeneğini durumda ARG1 Sonu' –
basit yöntemi arg2 sonra boş başka boş (ARG1 ucu arg2 sonra boş değil durumda) '' dır. İstediğiniz bir işlev, Oracle'dan nvl2() 'dir. –
MySQL, sizi doğru anladığım takdirde bunun için çalışacak olan [COALESCE] özelliğini (http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_coalesce) desteklemektedir. –