반응형


그동안 김종열님의 CLR 강좌를 따라 하면서 저에게 필요한 function 을 만들어보았습니다.

기존 김종열님 강좌에서 사용되었던 ‘PRJ_CLR’ 프로젝트와 ‘youlydb’ DB를 사용하였습니다.

Function : UDF_GET_NUM

Function 기능 : 입력된 문자열 중 숫자만을 골라서 리턴

문자열의 길이만큼 for 문을 사용하여 루핑을 돌면서 한 문자씩 숫자인지 확인 후

숫자일 경우 따로 변수에 저장한 후 리턴하는 형식입니다.
소스파일 첨부 : UDF_GET_NUM.cs


using System;

using System.Data;

using System.Data.SqlClient;

using System.Data.SqlTypes;

using Microsoft.SqlServer.Server;

 

 

public partial class UserDefinedFunctions

{

    [Microsoft.SqlServer.Server.SqlFunction]

    public static SqlInt16 UDF_GET_NUM(SqlString str)

    {

        // Put your code here

        try

        {

            string str_s = Convert.ToString(str);

            string _num = "";

            for (int i = 0; i <= str_s.Length-1; i++) //문자열 길이 만큼 반복

            {

                if (Char.IsNumber(str_s, i) == true) //숫자인지 확인

                {

                    _num = _num + str_s.Substring(i, 1); //숫자일 경우 변수에 추가

                }

            }

            return (SqlInt16)Convert.ToInt16(_num); //숫자 형식으로 변환 후 리턴

        }

        catch

        {

            return 0;

        }

    }

};

 





Function 을 생성하고 컴파일, 배포 하는 과정은 기존에 김종열님 강좌에 있으므로 생략하도록 하겠습니다.

 

--결과

WITH TEST

AS

(

     SELECT STR_S = 'RUBY V1.0' UNION ALL

     SELECT STR_S = '1997315' UNION ALL

     SELECT STR_S = '1011106'

)

 

SELECT STR_S, [NUM] = DBO.UDF_GET_NUM(STR_S) FROM TEST

 

 

--RESULT

STR_S            NUM

---------------  -----------

RUBY V1.0        10

1997315     1997315

1011106       1011106

 

(3 row(s) affected)

 

반응형

+ Recent posts