/****** Object:  UserDefinedFunction [dbo].[fnMoneyString]    Script Date: 2017-02-08 오후 4:52:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*****************************************************************************************
내용 : 숫자를 한글로 변환해주는 함수
작성 :
날짜 : 2017-02-08

수정 : 0000-00-00 홍길동 > 수정내용
*****************************************************************************************/

ALTER FUNCTION [dbo].[fnMoneyString]
(
 @WON BIGINT
)
RETURNS VARCHAR(200)
AS
BEGIN
 
 DECLARE
 @INPUT_VALUE VARCHAR(50)
 , @NOW_POSITION TINYINT
 , @ACC_KOREAN_VALUE NVARCHAR(100)
 , @NOW_POSITION_VALUE CHAR(1)
 , @BUFFER_KOREAN_VALUE NVARCHAR(100)
 , @SIGN NVARCHAR(50)

 
 SELECT @INPUT_VALUE = CAST(@WON AS VARCHAR(50)), @NOW_POSITION = 0, @ACC_KOREAN_VALUE = '', @NOW_POSITION_VALUE =''
 
 SET @SIGN = CASE WHEN @WON = 0 THEN '영' WHEN @WON > 0 THEN '' ELSE '마이너스' END
 
 WHILE (1=1)
 BEGIN
  SELECT @NOW_POSITION = LEN(@INPUT_VALUE), @NOW_POSITION_VALUE = LEFT(@INPUT_VALUE, 1)

  IF LEN(@INPUT_VALUE) = 0 BREAK

  IF @NOW_POSITION_VALUE <> 0
  BEGIN
   SELECT
    @ACC_KOREAN_VALUE =
    @ACC_KOREAN_VALUE + 
    CASE @NOW_POSITION_VALUE
     WHEN '0' THEN '영'
     WHEN '1' THEN '일'
     WHEN '2' THEN '이'
     WHEN '3' THEN '삼'
     WHEN '4' THEN '사'
     WHEN '5' THEN '오'
     WHEN '6' THEN '육'
     WHEN '7' THEN '칠'
     WHEN '8' THEN '팔'
     WHEN '9' THEN '구'
    END +
    CASE @NOW_POSITION
     WHEN '1' THEN ''
     WHEN '2' THEN '십'
     WHEN '3' THEN '백'
     WHEN '4' THEN '천'
     WHEN '5' THEN '만'
     WHEN '6' THEN '십만'
     WHEN '7' THEN '백만'
     WHEN '8' THEN '천만'
     WHEN '9' THEN '억'
     WHEN '10' THEN '십억'
     WHEN '11' THEN '백억'
     WHEN '12' THEN '천억'
     WHEN '13' THEN '조'
     WHEN '14' THEN '십조'
     WHEN '15' THEN '백조'
     WHEN '16' THEN '천조'
     WHEN '17' THEN '경'
     WHEN '18' THEN '십경'
     WHEN '19' THEN '백경'
     WHEN '20' THEN '천경'
    END

   IF CHARINDEX ('만',@ACC_KOREAN_VALUE) > 0
   BEGIN
    WHILE (1=1)
    BEGIN
     IF ( CHARINDEX ('만',@ACC_KOREAN_VALUE) > 0 )
      SELECT @BUFFER_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('만', @ACC_KOREAN_VALUE),1,'')
      
      IF ( CHARINDEX ('만',@BUFFER_KOREAN_VALUE) = 0 )
      BEGIN
       BREAK;
      END
      ELSE
      BEGIN
       SELECT @ACC_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('만', @ACC_KOREAN_VALUE),1,'')
      END
    END
   END

   IF CHARINDEX ('억',@ACC_KOREAN_VALUE) > 0 BEGIN
    WHILE (1=1)
    BEGIN
     IF ( CHARINDEX ('억',@ACC_KOREAN_VALUE) > 0 )
      SELECT @BUFFER_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('억', @ACC_KOREAN_VALUE),1,'')

      IF ( CHARINDEX ('억',@BUFFER_KOREAN_VALUE) = 0 )
      BEGIN
       BREAK;
      END
      ELSE
      BEGIN
       SELECT @ACC_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('억', @ACC_KOREAN_VALUE),1,'')
      END
    END
   END

   IF CHARINDEX ('조',@ACC_KOREAN_VALUE) > 0
   BEGIN
    WHILE (1=1)
    BEGIN
     IF ( CHARINDEX ('조',@ACC_KOREAN_VALUE) > 0 )
      SELECT @BUFFER_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('조', @ACC_KOREAN_VALUE),1,'')

      IF ( CHARINDEX ('조',@BUFFER_KOREAN_VALUE) = 0 )
      BEGIN
       BREAK;
      END
      ELSE
      BEGIN
       SELECT @ACC_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('조', @ACC_KOREAN_VALUE),1,'')
      END
    END
   END

   IF CHARINDEX ('경',@ACC_KOREAN_VALUE) > 0
   BEGIN
    WHILE (1=1)
    BEGIN
     IF ( CHARINDEX ('경',@ACC_KOREAN_VALUE) > 0 )
      SELECT @BUFFER_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('경', @ACC_KOREAN_VALUE),1,'')
      
      IF ( CHARINDEX ('경',@BUFFER_KOREAN_VALUE) = 0 )
      BEGIN
       BREAK;
      END
      ELSE
      BEGIN
       SELECT @ACC_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('경', @ACC_KOREAN_VALUE),1,'')
      END
    END
   END
  END

  SELECT @INPUT_VALUE = SUBSTRING(@INPUT_VALUE,2,LEN(@INPUT_VALUE)-1)
 END


 RETURN @SIGN + @ACC_KOREAN_VALUE;

END

 

+ Recent posts


/****** Object:  UserDefinedFunction [dbo].[fnMoneyString]    Script Date: 2017-02-08 오후 4:52:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*****************************************************************************************
내용 : 숫자를 한글로 변환해주는 함수
작성 :
날짜 : 2017-02-08

수정 : 0000-00-00 홍길동 > 수정내용
*****************************************************************************************/

ALTER FUNCTION [dbo].[fnMoneyString]
(
 @WON BIGINT
)
RETURNS VARCHAR(200)
AS
BEGIN
 
 DECLARE
 @INPUT_VALUE VARCHAR(50)
 , @NOW_POSITION TINYINT
 , @ACC_KOREAN_VALUE NVARCHAR(100)
 , @NOW_POSITION_VALUE CHAR(1)
 , @BUFFER_KOREAN_VALUE NVARCHAR(100)
 , @SIGN NVARCHAR(50)

 
 SELECT @INPUT_VALUE = CAST(@WON AS VARCHAR(50)), @NOW_POSITION = 0, @ACC_KOREAN_VALUE = '', @NOW_POSITION_VALUE =''
 
 SET @SIGN = CASE WHEN @WON = 0 THEN '영' WHEN @WON > 0 THEN '' ELSE '마이너스' END
 
 WHILE (1=1)
 BEGIN
  SELECT @NOW_POSITION = LEN(@INPUT_VALUE), @NOW_POSITION_VALUE = LEFT(@INPUT_VALUE, 1)

  IF LEN(@INPUT_VALUE) = 0 BREAK

  IF @NOW_POSITION_VALUE <> 0
  BEGIN
   SELECT
    @ACC_KOREAN_VALUE =
    @ACC_KOREAN_VALUE + 
    CASE @NOW_POSITION_VALUE
     WHEN '0' THEN '영'
     WHEN '1' THEN '일'
     WHEN '2' THEN '이'
     WHEN '3' THEN '삼'
     WHEN '4' THEN '사'
     WHEN '5' THEN '오'
     WHEN '6' THEN '육'
     WHEN '7' THEN '칠'
     WHEN '8' THEN '팔'
     WHEN '9' THEN '구'
    END +
    CASE @NOW_POSITION
     WHEN '1' THEN ''
     WHEN '2' THEN '십'
     WHEN '3' THEN '백'
     WHEN '4' THEN '천'
     WHEN '5' THEN '만'
     WHEN '6' THEN '십만'
     WHEN '7' THEN '백만'
     WHEN '8' THEN '천만'
     WHEN '9' THEN '억'
     WHEN '10' THEN '십억'
     WHEN '11' THEN '백억'
     WHEN '12' THEN '천억'
     WHEN '13' THEN '조'
     WHEN '14' THEN '십조'
     WHEN '15' THEN '백조'
     WHEN '16' THEN '천조'
     WHEN '17' THEN '경'
     WHEN '18' THEN '십경'
     WHEN '19' THEN '백경'
     WHEN '20' THEN '천경'
    END

   IF CHARINDEX ('만',@ACC_KOREAN_VALUE) > 0
   BEGIN
    WHILE (1=1)
    BEGIN
     IF ( CHARINDEX ('만',@ACC_KOREAN_VALUE) > 0 )
      SELECT @BUFFER_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('만', @ACC_KOREAN_VALUE),1,'')
      
      IF ( CHARINDEX ('만',@BUFFER_KOREAN_VALUE) = 0 )
      BEGIN
       BREAK;
      END
      ELSE
      BEGIN
       SELECT @ACC_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('만', @ACC_KOREAN_VALUE),1,'')
      END
    END
   END

   IF CHARINDEX ('억',@ACC_KOREAN_VALUE) > 0 BEGIN
    WHILE (1=1)
    BEGIN
     IF ( CHARINDEX ('억',@ACC_KOREAN_VALUE) > 0 )
      SELECT @BUFFER_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('억', @ACC_KOREAN_VALUE),1,'')

      IF ( CHARINDEX ('억',@BUFFER_KOREAN_VALUE) = 0 )
      BEGIN
       BREAK;
      END
      ELSE
      BEGIN
       SELECT @ACC_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('억', @ACC_KOREAN_VALUE),1,'')
      END
    END
   END

   IF CHARINDEX ('조',@ACC_KOREAN_VALUE) > 0
   BEGIN
    WHILE (1=1)
    BEGIN
     IF ( CHARINDEX ('조',@ACC_KOREAN_VALUE) > 0 )
      SELECT @BUFFER_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('조', @ACC_KOREAN_VALUE),1,'')

      IF ( CHARINDEX ('조',@BUFFER_KOREAN_VALUE) = 0 )
      BEGIN
       BREAK;
      END
      ELSE
      BEGIN
       SELECT @ACC_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('조', @ACC_KOREAN_VALUE),1,'')
      END
    END
   END

   IF CHARINDEX ('경',@ACC_KOREAN_VALUE) > 0
   BEGIN
    WHILE (1=1)
    BEGIN
     IF ( CHARINDEX ('경',@ACC_KOREAN_VALUE) > 0 )
      SELECT @BUFFER_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('경', @ACC_KOREAN_VALUE),1,'')
      
      IF ( CHARINDEX ('경',@BUFFER_KOREAN_VALUE) = 0 )
      BEGIN
       BREAK;
      END
      ELSE
      BEGIN
       SELECT @ACC_KOREAN_VALUE = STUFF(@ACC_KOREAN_VALUE, CHARINDEX('경', @ACC_KOREAN_VALUE),1,'')
      END
    END
   END
  END

  SELECT @INPUT_VALUE = SUBSTRING(@INPUT_VALUE,2,LEN(@INPUT_VALUE)-1)
 END


 RETURN @SIGN + @ACC_KOREAN_VALUE;

END

 

+ Recent posts