2010-05-12 2 views
4

루비에서 오라클의 nvl() 함수를 사용하고 싶습니다. 내장 된 함수가 있습니까? 아니면 직접 작성해야합니까?Ruby에 nvl() 함수가 있습니까? 아니면 직접 작성해야합니까?

편집 : 루비 몇 가지 SQL을 재 작성하는 데 사용하고

:

INSERT INTO my_table (id, val) 
VALUES (1, nvl(my_variable,'DEFAULT')); 

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

여기에 오라클이 아닌 사용자를 위해 : nvl()은 무엇을합니까? 음, 쉽게 검색 할 수 있으므로 더 중요한 질문은 무엇입니까? 할 일이 무엇입니까? –

답변

7

이되고 당신은 사용할 수 Conditional assignment

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 

운영자 012 358,는

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하지 않으려면 닉 루이스

irb(main):024:0> x=nil 
=> nil 
irb(main):026:0* x = 1 if x.nil? 
=> 1 
을 언급 한 바와 같이 예, 당신은 if x.nil?를 사용할 수있는 표현의 축약 형태이다

편집 :

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

plsql.my_table.insert {:id => 1, :val => x || 'DEFAULT' } 
x가에서 설정할 수있는 변수 이름입니다

은 다음과 같습니다 x가 존재하지 않거나 거짓 인 경우 발 'DEFAULT'가, DB에 삽입됩니다

만에 전무합니다 'DEFAULT', 다음 방법을 사용하십시오.

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

x가 nil이 아닌 거짓 값인 경우 즉, false 인 경우 제대로 작동하지 않습니다. – Anonymoose

+0

Imm,'nil'과'false' 둘 다 작동해야합니다 – YOU

+0

x.nil?'이 더 잘 작동하면'x = "default" –

관련 문제