'프로그래밍/MS-SQL'에 해당되는 글 7건

  1. 2010.03.26 | 구분자로 분리된 값을 여러레코드로 반환

일반적인 SQL 내장 함수로는 처리가 불가능 하지만

MSSQL 2005 부터는

아래와 같은 사용자정의함수를 통해 결과를 얻을 수 있습니다


USE TEMPDB
GO
CREATE TABLE TEST(A INT, B VARCHAR(10))

GO

INSERT TEST VALUES(1,'1')
INSERT TEST VALUES(1,'1,2')
INSERT TEST VALUES(1,'1,2,3')
INSERT TEST VALUES(1,'1,2,3,4')

GO


CREATE FUNCTION DBO.UFN_SPLIT
(
@TEXT VARCHAR(1000)
,@COMMA CHAR(1)
)
RETURNS @T TABLE ( NUM INT)
AS
BEGIN
DECLARE @NUM INT
IF @TEXT IS NULL OR @TEXT = ''
    RETURN

IF CHARINDEX(@COMMA,@TEXT) = 0
          INSERT @T VALUES(CONVERT(INT,@TEXT))
ELSE
BEGIN
     SET @NUM = 0
     WHILE CHARINDEX(@COMMA,@TEXT) >= 0
     BEGIN
              IF CHARINDEX(@COMMA,@TEXT) = 0
              BEGIN
                    INSERT @T VALUES(CONVERT(INT,@TEXT))
                    RETURN
              END
              ELSE
              BEGIN
              SET @NUM = CONVERT(INT, SUBSTRING(@TEXT,1,CHARINDEX(@COMMA,@TEXT)-1))
              INSERT @T VALUES (@NUM)
              SET @TEXT = SUBSTRING(@TEXT
,CHARINDEX(@COMMA,@TEXT)+1
,LEN(@TEXT)-CHARINDEX(@COMMA,@TEXT))
              END
     END
END
RETURN
END

GO


SELECT TEST.A, B.NUM FROM TEST
              CROSS APPLY DBO.UFN_SPLIT(TEST.B,',') B

'프로그래밍 > MS-SQL' 카테고리의 다른 글

sql 인젝션  (0) 2013.03.15
SQL2005 HASH함수 MD5  (0) 2013.03.15
sp_change_users_login  (0) 2009.06.19
SQL Injection 기법 정리 #2  (0) 2007.11.22
프로필러 설정  (0) 2007.11.22
 
블로그 이미지

손반장님

카테고리

분류 전체보기 (68)
잡담 (15)
stuff (6)
Mountain (11)
프로그래밍 (35)
ASP.NET MVC (0)
ASP.NET (1)
JAVA (8)
AJAX (1)
LINUX (0)
MS-SQL (7)
ORACLE (1)
MYSQL (6)
ETC (11)