ALTER FUNCTION [dbo].[UF_GET_SUKI] (@iValue BIGINT)
RETURNS VARCHAR(60)
AS
BEGIN
DECLARE @sValue VARCHAR(40)
DECLARE @sReturn VARCHAR(60)
DECLARE @token VARCHAR(40)
DECLARE @flag CHAR(1)
DECLARE @man CHAR(1)
DECLARE @uk CHAR(1)
DECLARE @pointer INT
DECLARE @position INT
DECLARE @lastpos INT
SET @sValue = CONVERT(VARCHAR(40), @iValue)
SET @lastpos = LEN(@sValue) - 1
SET @flag = 'T'
SET @man = 'T'
SET @uk = 'T'
SET @pointer = @lastpos
SET @position = 0
SET @sReturn = ''
WHILE (@flag = 'T' AND @pointer >=0)
BEGIN
SET @token = Right(@sValue, 1)
IF (@token <> '0')
BEGIN
IF(@position = 4 OR @position = 5 OR @position = 6 OR @position = 7)
BEGIN
IF(@man = 'T')
BEGIN
SET @sReturn = '萬' + @sReturn
SET @man = 'F'
END
END
ELSE
IF(@position = 8 OR @position = 9 OR @position = 10 OR @position = 11)
BEGIN
IF(@uk = 'T')
BEGIN
SET @sReturn = '億' + @sReturn
SET @uk = 'F'
END
END
IF(@position % 4 = 0)
SET @sReturn = @sReturn
ELSE
IF(@position % 4 = 1)
SET @sReturn = '拾' + @sReturn
ELSE
IF(@position % 4 = 2)
SET @sReturn = '百' + @sReturn
ELSE
IF(@position % 4 = 3)
SET @sReturn = '阡' + @sReturn
SET @sReturn = dbo.UF_GET_SUKI_HAN(@token, 'C') + @sReturn
END
SET @sValue = SUBSTRING(@sValue, 1, @pointer)
SET @pointer = @pointer - 1
SET @position = @position + 1
END
RETURN( @sReturn + '원')
END
'DBMS > MS SQL' 카테고리의 다른 글
ROUND (0) | 2013.05.03 |
---|---|
값채우기 예) 1을 '01' 로 변환하기 (0) | 2013.05.03 |
숫자 하나씩를 한글 또는 한문으로 (0) | 2013.05.03 |
BOM과 같은 계층구조 -WITH사용 예 (0) | 2013.05.03 |
여러 행 데이터를 한줄로 보이게 하기 (0) | 2013.05.03 |