sql >> Database >  >> RDS >> Oracle

Is er een nvl()-functie in Ruby of moet ik die zelf schrijven?

U kunt Voorwaardelijke toewijzing gebruiken

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

Operator ||= is een verkorte vorm van de uitdrukking

x = x || "default"

Enkele testen

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

En ja, als u niet wilt dat false overeenkomt, kunt u if x.nil? gebruiken zoals Nick Lewis al zei

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

Bewerken :

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

zou zijn

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

waarbij x de variabelenaam is die moet worden ingesteld in :val, 'DEFAULT' wordt ingevoegd in db, wanneer x nul of onwaar is

Als u alleen nul tot 'DEFAULT' wilt, gebruik dan de volgende manier

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



  1. Hoe de tijd naar datum in de lokale tijdzone te converteren tijdens het zoeken

  2. Datums vergelijken die zijn opgeslagen als varchar

  3. Letterlijk komt niet overeen met formaattekenreeks voor Oracle SQL to_date in een tekenreekskolom

  4. Meerdere rijen uit de database verwijderen met selectievakjes