세일즈포스(Salesforce, SFDC) 이야기/관리자(Admin)을 위해...

자주 쓰는 함수와 연산자들 - (2) 조건 함수와 논리 연산자/함수

sfdc-exp 2025. 3. 11. 17:57

 

https://help.salesforce.com/s/articleView?id=platform.customize_functions.htm&type=5

 

조건 처리 함수들

IF( 조건문, 조건문인 인 경우의 값, 조건문인 거짓인 경우의 값, )

IF() 함수는 엑셀의 IF() 함수와 동일하다. 간단한 예를 들면;

  • IF(Amount > 1000, "High", "Low")

위의 예제에서 Amount 라는 필드의 값이 1,000 보다 크면 결과값은 HIgh 가 되고, 아니라면 Low 가 된다. 즉, 결과값은 텍스트 유형의 데이터다. 이와 같이 IF() 함수의 결과값은 어떠한 경우든 리턴되는 결과값은 항상 동일한 데이터 유형이어야 한다는 점에 유의하자.

 

엑셀에서와 같이 유사하게 세일즈포스의 IF() 함수도 아래의 예문과 같이 중첩(Nested) 형태로 사용할 수 있다:

IF($User.City = "Napa", 0.0750, 

      IF($User.City = "Paso Robles", 0.0725, 

            IF($User.City = "Sutter Creek", 0.0725, 

                  IF($User.City = "Los Olivos", 0.0750, 

                        IF($User.City = "Livermore", 0.0875, null

                           )

                     )

                )

        )

)

위의 예제는, 사용자의 주소중 City 필드($User.City)의 값을 비교하여 그에 따라 위에서 부터 아래로 검사하면서 일치하는 값이 있으면 그 값을 결과값으로 리턴한다. 수식란에 입력시 로직을 쉽게 이해하기 위한 목적으로 위와 같은 형식으로 사용한다는 점을 기억하자.

 

단, 위의 예제처럼 조건문에서 비교하는 변수($User.City)가 동일한 경우 아래의 CASE() 함수를 사용하는 것이 적절한 방법이다.

 

CASE( 조건 변수, 조건값1, 결과값1,, 조건값2, 결과값2,…, 기타의 경우 값)

CASE() 함수는 ‘조건 변수’의 값에 따른 값을 선택하여 반환하는 함수다. 즉, 변수의 값에 따라 아래와 같이 값이 결정 된다.

     조건값1 결과값1

     조건값2 결과값2

       . . . . . . . . . . . . 

     기타의 경우 마지막 값 : 제시된 조건값에 일치하는 것이 없을 경우의 값.

 

예를 들어 아래와 같이 수식을 사용하였다면 ‘Status’ 필드의 값이 ‘New’ 이면 결과값은 ‘Green’, ‘Closed’ 이면 ‘Blue’, ‘Escalated’ 라면 ‘Red’, 공백이거나 앞의 세가지 값이 아니라면 ‘Default’ 를 리턴한다.

  • CASE( Status, "New", "Green", "Closed", "Blue", “Escalated”, “Red”, "Default" )

CASE() 함수는 위에서 언급한 중첩된 IF() 함수와 유사하기 적절하게 사용하면 간결한 코드, 수식을 작성하는 유용한 함수이다.

 

논리 연산자/함수

논리 연산자와 함수는 필드의 값이 주어진 조건에 대하여 ‘참’ 인지 ‘거짓’인지를 판단하기 위한 목적으로 사용된다.

 

ISBLANK( 필드명 )

ISBLANK() 함수는 파라미터로 전달된 필드가 Blank 또는 Null 인지 판단하는 함수로서, Blank 또는 Null 이라면 결과값이 TRUE 또는 1 이 되고, 그렇지 않다면 FALSE 또는 0 이 된다.

 

  • 텍스트 필드의 경우 사용자가 스페이스 키를 누른 경우, 눈에는 보이지 않지만 공백이 입력되어 있는 상태이므로 ISBLANK() 로 체크하면 결과값은 FALSE 가 된다.
  • 숫자 필드의 경우도 0Blank 가 아니라는 점에 유의해야 한다. 즉, 0이 아닌 아무것도 보이지 않는 상태가 Blank 다.

 

ISNULL( 필드명 )

ISNULL() 함수는 파라미터로 전달된 필드가 Null 인지 판단하는 함수로서, 필드의 값이 Null 이면 TRUE 또는 1 이 되고, 그렇지 않다면 FALSE 또는 0 이 된다. 사실 ISBLANK() 도 필드의 값이 Null 인지를 체크하기 때문에 혼동이 되기도 하지만, ISNULL() 함수는 아래와 같은 헛점들이 있기 때문에 가급적 ISBLANK() 를 사용하는 것이 권장된다.

 

ISNULL() 함수의 헛점:

  • 텍스트 유형의 필드는 Null 이 되는 경우가 없다. 따라서 텍스트 필드를 ISNULL() 함수의 결과값은 항상 FALSE 이므로 의미가 없다.
  • 날짜 또는 날짜/시간 유형의 필드를 대하여 결과값은 항상 TRUE 가 되므로 의미가 없다.
  • 조회 관계 필드가 비어 있을때 ISNULL() 함수의 값은 항상 FALSE 가 된다.

 

결론적으로, ISNULL() 보다는 ISBLANK() 를 사용하는 것이 바람직하다.

 

BLANKVALUE( 대상 필드, 대체할 값 또는 수식 )

BLANKVALUE() 함수는 첫번째 파라미터인 필드의 값이 Blank 이면 대체할 값 또는 수식으로 지정한 값을 리턴하고, 만일 필드에 어떤 값이 있어 Blank 가 아니라면 대상 필드의 값을 리턴한다. 예를 들면;

  • BLANKVALUE(Due_Date__c, Date_Opened__c + 7) : Due_Date__c 필드가 Blank 이면 Date_Opened__c 값에 7일을 더한 값을 리턴한다. 만일 필드에 어떤 값이 있다면 Due_Date__c 필드의 값을 리턴한다.
  • BLANKVALUE(Site, “No Website”) : Site 필드에 값이 있으면 필드의 값을 리턴하고, 만일 필드가 비어 있으면, 다시 말해 Blank 라면 ‘No Website’ 라는 값을 리턴한다.

 

NULLVALUE( 대상 필드, 대체할 값 또는 수식 )

위에서 설명한 BLANKVALUE() 함수와 유사하게 작동한다. ISNULL() 함수에서 설명한 헛점들이 NULLVALUE() 함수에서도 동일하게 나타나므로 가급적 BLANKVALUE() 함수를 사용할 것을 권한다.

 

AND( 조건1, 조건2,...조건N )

AND() 함수는 파라미터로 전달된 모든 조건들이 인 경우만 참(TRUE) 을 리턴하고, 조건식 중에 하나라도 거짓 이면 거짓(FALSE) 을 리턴한다. 예를 들면;

 

  • AND( ISBLANK (Subscription_status__c),  Account.OwnerId = $User.Id )

 

위의 수식은, Subscription_status__c 필드가 Blank 이고 현재 오픈되어 있는 계정(Account)소유자의 ID (Account.OwnerId) 가 현재 사용자의 ID ($User.Id) 와 일치하면, 다시 말해 내 계정인 경우에만 위의 수식의 결과값이 ‘참(TRUE)’ 이 된다. 그외에 경우는 ‘거짓(FALSE)’ 를 리턴한다. AND() 함수는 주로 아래와 같이 IF() 함수와 같이 사용된다.

 

  • IF ( AND ( Level__c  < 5, Difficulty__c < 3 ), "쉬움", "보통")

 

위의 예를 보면, Leve__c 필드의 값이 5보다 작고(Level__c  < 5) Difficulty__c 필드의 값이 3보다 작은 경우 (Difficulty__c < 3) AND() 함수의 결과값이 ‘참(TRUE)’ 이 되고, IF() 함수의 조건식이 ‘참(TRUE)’이므로 ‘쉬움’ 이라는 값이 리턴되는데, 2가지 조건중 하나라도 맞지 않으면 결과값은 ‘보통’ 된다.

 

AND() 함수는 ‘&&’ 이라는 연산자로 대체할 수 있는데, 위의 두번째 예를 연산자로 대체하면 아래와 같다.

 

  • IF ( AND ( Level__c  < 5, Difficulty__c < 3 ), "쉬움", "보통")
    ➡ IF ( ( Level__c  < 5 ) &&  (Difficulty__c < 3 ) ), "쉬움", "보통")

 

OR( 조건1, 조건2,...조건N )

OR() 함수는 AND() 함수와 사용법이 유사한데 파라미터로 전달된 조건들중 한가지라도 ‘참’ 이면 참(TRUE)’ 을 리턴하고, 모든 조건식이 ‘거짓’ 이면 ‘거짓(FALSE) 을 리턴한다. 예를 들면;

 

  • OR( ISBLANK (Subscription_status__c),  Account.OwnerId = $User.Id )

 

위의 수식은, Subscription_status__c 필드가 Blank 이거나 현재 오픈되어 있는 계정(Account)소유자의 ID (Account.OwnerId) 가 현재 사용자의 ID ($User.Id) 와 일치하면, 다시 말해 내 계정이면 수식의 결과값이 ‘참(TRUE)’ 이 된다. 2가지 조건식이 모두 ‘거짓(FALSE)’ 인 경우에만  ‘거짓(FALSE)’ 을 리턴한다. OR() 함수도 주로 아래와 같이 IF() 함수와 같이 사용된다.

 

  • IF ( OR ( Level__c  < 5, Difficulty__c < 3 ), "쉬움", "보통")

 

위의 예를 보면, Leve__c 필드의 값이 5보다 작거나 또는  (Level__c  < 5) Difficulty__c 필드의 값이 3보다 작은 경우 (Difficulty__c < 3) 결과값이 ‘참(TRUE)’ 이 되고, IF() 함수의 조건식이 ‘참(TRUE)’이므로 ‘쉬움’ 이라는 값이 리턴되는데, 2가지 조건이 모두 ‘거짓(FALSE)’ 이라면 결과값은 보통이 된다.

 

OR() 함수는 ‘|| 이라는 연산자로 대체할 수 있는데, 위의 두번째 예를 연산자로 대체하면 아래와 같다.

 

  • IF ( OR ( Level__c  < 5, Difficulty__c < 3 ), "쉬움", "보통")
    IF ( ( Level__c  < 5 ) II  (Difficulty__c < 3 ) ), "쉬움", "보통")

 

NOT( 조건1 )

NOT() 함수는 파라미터로 전달된 조건의 결과값의 반대값을 리턴하는 함수다. 즉, 조건의 결과값이 ‘참’ 이면 ‘거짓(FALSE)이 되고, 조건의 결과값이 ‘거짓(FALSE) 이면 함수의 결과값은 이면 ‘참(TRUE)’ 이 된다. 예를 들면;

 

  • NOT( ISBLANK ( Subscription_Status__c ) )

 

Subscription_Status__c 필드가 Blank 면 ISBLANK ( Subscription_Status__c ) 의 값은 ‘참’ 이 되므로 NOT() 함수의 결과값은 그 반대인 ‘거짓(FALSE)  이 된다. 그 반대의 경우도 마찬 가지다.

 

NOT() 함수의 대체 연산자는 ‘!=’ 와 ‘<>’가 있는데, 아래 예와 같이 Null 과 비교하기 위한 용도로 사용해서는 안된다. 필요하다면 대신 위에서 설명한 ISBLANK() 를 사용해야 한다.

 

  • Level__c != null  또는  Level__c <> null (X)

 

오늘은 조건 및 논리 연산자/함수에 대하여 알아보았는데, 다음 글에서는 자주 사용하는 함수의 마지막 시리즈로 레코드 처리와 관련된 함수, 수학 함수 및 텍스트 처리 함수에 대하여 알아보기로 하자.