Oracle
 sql >> база данни >  >> RDS >> Oracle

Има ли функция nvl() в Ruby или трябва да я напиша сам?

Можете да използвате Условно присвояване

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

И да, ако не искате false да бъде съвпадение, можете да използвате 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 е името на променливата за задаване в :val, 'DEFAULT' ще бъде вмъкнато в db, когато x е нула или невярно

Ако искате само нула до 'DEFAULT', използвайте следния начин

{: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. Как да подобря производителността на заявката за вмъкване на SQL?

  2. Ако данните съществуват, в противен случай... използвайки Oracle SQL?

  3. Причинено от:java.sql.SQLException:ORA-01795:максималният брой изрази в списък е 1000?

  4. проблем с използването на параметрите на Oracle в SELECT IN

  5. Не може да се предаде стойност на низ 1,2 като вход към заявка за оракул