블로그 이미지
010-9967-0955 보미아빠

카테고리

보미아빠, 석이 (500)
밥벌이 (16)
싸이클 (1)
일상 (1)
Total
Today
Yesterday

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

공지사항

최근에 올라온 글

SQL은 집합처럼 보이는 순차처리 어플일 뿐이다....집합 집합 집합 하고 2,3년차 꼬셔 사고를 말리지 말자..

아래는 재미있는 문자열 장난이다. 심심할때 한번 보길 바란다.

 

 

 

 

 

IF OBJECT_ID ('USP_SPLITSTRING') IS NULL
EXEC('CREATE PROC USP_SPLITSTRING AS SELECT 1 ')
GO

ALTER PROC USP_SPLITSTRING
(
@INPUTV VARCHAR(MAX) ='1,2,3,0,'
, @STRINGCNT INT = 4 -- 주던지 내부에서 LEN 해서 구하던지.......
)
AS
SET NOCOUNT ON

DECLARE @I1 VARCHAR (10), @I2 VARCHAR (10), @I3 VARCHAR (10), @I4 VARCHAR (10), @I5 VARCHAR (10)
    ,@I6 VARCHAR (10), @I7 VARCHAR (10), @I8 VARCHAR (10), @I9 VARCHAR (10), @I10 VARCHAR (10)

IF @STRINGCNT <= 10
BEGIN
 SELECT
  @I1 = SUBSTRING(@INPUTV, 0, CHARINDEX(',', @INPUTV)), @INPUTV = SUBSTRING(@INPUTV, CHARINDEX(',', @INPUTV)+1, 90000000000000)
 ,   @I2 = SUBSTRING(@INPUTV, 0, CHARINDEX(',', @INPUTV)), @INPUTV = SUBSTRING(@INPUTV, CHARINDEX(',', @INPUTV)+1, 90000000000000)
 ,   @I3 = SUBSTRING(@INPUTV, 0, CHARINDEX(',', @INPUTV)), @INPUTV = SUBSTRING(@INPUTV, CHARINDEX(',', @INPUTV)+1, 90000000000000)
 ,   @I4 = SUBSTRING(@INPUTV, 0, CHARINDEX(',', @INPUTV)), @INPUTV = SUBSTRING(@INPUTV, CHARINDEX(',', @INPUTV)+1, 90000000000000)
 ,   @I5 = SUBSTRING(@INPUTV, 0, CHARINDEX(',', @INPUTV)), @INPUTV = SUBSTRING(@INPUTV, CHARINDEX(',', @INPUTV)+1, 90000000000000)
 ,   @I6 = SUBSTRING(@INPUTV, 0, CHARINDEX(',', @INPUTV)), @INPUTV = SUBSTRING(@INPUTV, CHARINDEX(',', @INPUTV)+1, 90000000000000)
 ,   @I7 = SUBSTRING(@INPUTV, 0, CHARINDEX(',', @INPUTV)), @INPUTV = SUBSTRING(@INPUTV, CHARINDEX(',', @INPUTV)+1, 90000000000000)
 ,   @I8 = SUBSTRING(@INPUTV, 0, CHARINDEX(',', @INPUTV)), @INPUTV = SUBSTRING(@INPUTV, CHARINDEX(',', @INPUTV)+1, 90000000000000)
 ,   @I9 = SUBSTRING(@INPUTV, 0, CHARINDEX(',', @INPUTV)), @INPUTV = SUBSTRING(@INPUTV, CHARINDEX(',', @INPUTV)+1, 90000000000000)
 ,  @I10 = SUBSTRING(@INPUTV, 0, CHARINDEX(',', @INPUTV)), @INPUTV = SUBSTRING(@INPUTV, CHARINDEX(',', @INPUTV)+1, 90000000000000)

 SELECT *
   FROM (VALUES (@I1), (@I2), (@I3), (@I4), (@I5), (@I6), (@I7), (@I8), (@I9), (@I10)) V (INPUTV)
  WHERE INPUTV <> '' 
END ELSE BEGIN
 PRINT 'WHILE 로 계속 돌거라....끝날때까지 '
END
GO

EXEC USP_SPLITSTRING '1,2,2,0,1,32,4,2,12222222,11,', 10 -- ROW 로 만드는데 약 수백 US 가 걸린다.
GO
EXEC USP_SPLITSTRING '1,2,2,0,1,32,4,2,12222222,11,32123,2,32,3,3,211123,', 16 -- 끝날때까지 돌거라~
GO

--1. 10개 파라메터로 호출
--2. 넘는것은 따로 호출
--3. 기타...등등

 

 

 

Posted by 보미아빠
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함