Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

क्या रूबी में कोई nvl () फ़ंक्शन है या क्या मुझे इसे स्वयं लिखना है?

आप सशर्त असाइनमेंट का उपयोग कर सकते हैं

x = find_something() #=>nil
x ||= "default"      #=>"default" : value of x will be replaced with "default", but only if x is nil or false
x ||= "other"        #=>"default" : value of x is not replaced if it already is other than nil or false

ऑपरेटर ||= अभिव्यक्ति का संक्षिप्त रूप है

x = x || "default"

कुछ परीक्षण

irb(main):001:0> x=nil
=> nil
irb(main):003:0* x||=1
=> 1
irb(main):006:0> x=false
=> false
irb(main):008:0> x||=1
=> 1
irb(main):011:0* x||=2
=> 1
irb(main):012:0> x
=> 1

और हाँ, यदि आप नहीं चाहते कि असत्य का मिलान हो, तो आप if x.nil? का उपयोग कर सकते हैं जैसा कि निक लुईस ने उल्लेख किया है

irb(main):024:0> x=nil
=> nil
irb(main):026:0* x = 1 if x.nil?
=> 1

संपादित करें :

plsql.my_table.insert {:id => 1, :val => ???????}

होगा

plsql.my_table.insert {:id => 1, :val => x || 'DEFAULT' }

जहां x में सेट करने के लिए चर नाम है:वैल, 'DEFAULT' को डीबी में डाला जाएगा, जब x शून्य या गलत है

यदि आप केवल 'डिफ़ॉल्ट' के लिए शून्य चाहते हैं, तो निम्न तरीके का उपयोग करें

{:id => 1, :val => ('DEFAULT' if x.nil?) }



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle हाइबरनेट का उपयोग करके कार्य करता है

  2. चौराहे के माध्यम से 2 डेटा सेट में शामिल होना

  3. ORA-01438:निर्दिष्ट परिशुद्धता से बड़ा मान इस कॉलम के लिए अनुमति देता है - मैं यह कैसे प्राप्त करूं कि यह किस कॉलम का जिक्र कर रहा है?

  4. मैं Oracle/PLSQL में केवल NULL मान कैसे गिन सकता हूँ?

  5. ओरेकल में, मैं उस तारीख का पता कैसे लगा सकता हूं जिस दिन डेलाइट सेविंग टाइम शुरू/समाप्त होता है?