CREATE FUNCTION FUNCTIONS ( @CHANGE VARCHAR(40) )
RETURNS VARCHAR(40)
AS
BEGIN
DECLARE @CHANGE2 VARCHAR(40);
IF @CHANGE = 'E' SET @CHANGE2 = '';
ELSE IF @CHANGE = '0F' SET @CHANGE2 = '0';
ELSE IF @CHANGE = '10' SET @CHANGE2 = 'a';
ELSE IF @CHANGE = '12' SET @CHANGE2 = 'c';
ELSE IF @CHANGE = '13' SET @CHANGE2 = 'd';
ELSE IF @CHANGE = '27' SET @CHANGE2 = 'r';
RETURN @CHANGE2;
END;
Go
SELECT
dbo.FUNCTIONS(SUBSTRING(COLUMN,1,1))
+ dbo.FUNCTIONS(SUBSTRING(COLUMN,2,2))
+ dbo.FUNCTIONS(SUBSTRING(COLUMN,4,2))
+ dbo.FUNCTIONS(SUBSTRING(COLUMN,6,2))
+ dbo.FUNCTIONS(SUBSTRING(COLUMN,8,2))
FROM TABLE;
이렇게하니 10자리 이상되는 것들은 리턴하지 못하네요 그래서
SELECT
dbo.FUNCTIONS(SUBSTRING(COLUMN,1,1)) AS "A01"
, dbo.FUNCTIONS(SUBSTRING(COLUMN,2,2)) AS "B02"
, dbo.FUNCTIONS(SUBSTRING(COLUMN,4,2)) AS "C03"
, dbo.FUNCTIONS(SUBSTRING(COLUMN,6,2)) AS "D04"
, dbo.FUNCTIONS(SUBSTRING(COLUMN,8,2)) AS "E05"
FROM TABLE;
결과의 COLUMN (A01 + B02 + C03 + D04 + E05) 들을 합칠수 있나요?
예) "E0F10121327" -> " ", "0", "a", "c", "d", "r" 이렇게 나온값을 " 0acdr" 이렇게 하나의 COLUMN으로요
|