그동안 김종열님의 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 = '1997년3월15일' UNION ALL SELECT STR_S = '101동1106호' ) SELECT STR_S, [NUM] = DBO.UDF_GET_NUM(STR_S) FROM TEST --RESULT STR_S NUM --------------- ----------- RUBY V1.0 10 1997년3월15일 1997315 101동1106호 1011106 (3 row(s) affected)
'연구개발 > CLR' 카테고리의 다른 글
CLR - 10진수를 다른 진법의 수로 표현 (0) | 2009.06.22 |
---|---|
CLR - SQL CLR ARCHITECTURE (0) | 2009.06.22 |
CLR 강좌 - GREATEST_LEAST 구현하기 (0) | 2009.06.22 |
CLR 강좌 - Hostname을 이용한 IP구하기 (0) | 2009.06.22 |
CLR 강좌 - TEXT파일 읽기2 (0) | 2009.06.22 |