Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy w Rubim jest funkcja nvl(), czy muszę ją napisać sam?

Możesz użyć Przypisanie warunkowe

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 ||= to skrócona forma wyrażenia

x = x || "default"

Niektóre testy

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

I tak, jeśli nie chcesz, aby wartość false była dopasowana, możesz użyć if x.nil? jak wspomniał Nick Lewis

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

Edytuj :

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

byłoby

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

gdzie x jest nazwą zmiennej do ustawienia w :val, 'DEFAULT' zostanie wstawione do db, gdy x to zero lub false

Jeśli chcesz, aby zero było 'DOMYŚLNE', użyj następującego sposobu

{: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. Czy wydajność wpłynie na wielokrotne wywoływanie procedury bazy danych z aplikacji?

  2. Uzyskaj zakres adresów IP od xxx.xxx.xx.0/16

  3. gdzie mam umieścić zasoby instalatora (plik wxs, skrypt dmg, ikona) i jak skonfigurować maven antrun podczas wdrażania samodzielnej aplikacji

  4. Sprawdź Ciąg znaków jest poprawną datą, czy nie

  5. Limit czasu dla metody OracleDataReader.Read