'쿼리'에 해당되는 글 3건

  1. 2011.10.21 SQL Server에서 오라클의 NVL 대체 함수

SQL Server에서 오라클의 NVL 대체 함수


오라클에서 NVL(값1, 값2) 하게 되면 값1이 NULL일 경우 값2를 반환해주죠.
MS SQL Server에도 ISNULL(값1, 값2) 함수를 이용해서 동일한 결과를 나타낼 수 있습니다.

하지만 단순히 NULL뿐만 아니라 ''값도 체크해야 할 경우가 있습니다.
그럴때는 아래 함수를 SQL Server에 생성해놓고 사용하면 됩니다.

CREATE FUNCTION [dbo].[UF_NVL]
(
    @val1 sql_variant,   -- codelist1 의 코드값
    @val2 sql_variant   -- codelist2 의 코드값
)

RETURNS sql_variant
AS
BEGIN

    DECLARE @temp sql_variant 

    IF (@val1 is NULL) OR (@val1 = '')
        SELECT @temp = @val2
    ELSE
        SELECT @temp = @val1

    RETURN @temp

END


@val1이 null이거나 ''일 경우 @val2를 리턴하고, 아니면 @val1을 리턴하는 함수입니다.

예제
SELECT dbo.UF_NVL('연잎', '개구리밥')          결과 : 연잎
SELECT dbo.UF_NVL(null, '다람쥐')               결과 : 다람쥐
SELECT dbo.UF_NVL('', '송아지')                   결과 : 송아지

무슨 차이인지 아시겠죠?

 

추가
조회조건에서 사용할 경우 예제
SELECT a.*
    FROM dbo.table a
  WHERE a.usernm = dbo.UF_NVL(@param1, a.usernm)
      AND a.usergroup = dbo.UF_NVL(@param2, a.usergroup)

prev 1 2 3 next