'msSQL'에 해당되는 글 3건

  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)