일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- rs485
- M2M
- Serial
- Visual Studio Code
- 자본주의
- 텐서플로우
- 윈도우10
- MEAN Stack
- 크롤링
- rs422
- windows10
- scrapy
- 오라클
- matplot
- 장고
- tensorflow
- MSSQL
- MX Component
- pymssql
- oracle
- PYTHON MSSQL
- MSSQL PYTHON
- 딥러닝
- 파이썬
- 티스토리 초대장
- vscode
- sql developer
- Python
- c#
- django
Archives
- Today
- Total
안까먹을라고 쓰는 블로그
[MSSQL] SPLIT 구현 본문
반응형
1.문자열을 구분자로 분리하여 테이블로 반환하는 함수
-- SELECT * FROM[FN_GET_Split] ('A|B|C|D|E|F|G|', '|')
-- SELECT COUNT(*) FROM[FN_GET_Split] ('A|B|C|D|E|F|G|', '|')
ALTER FUNCTION [dbo].[FN_GET_Split]
(
@StrValue VARCHAR(1000), -- 분리할 문자열
@SplitChar VARCHAR(1) -- 구분할 문자
)
RETURNS @SPLIT_TEMP TABLE ( VALUE VARCHAR(50) )
AS
BEGIN
DECLARE @oPos INT, @nPos INT
DECLARE @TmpVar VARCHAR(1000) -- 분리된 문자열 임시 저장변수
SET @oPos = 1 -- 구분문자 검색을 시작할 위치
SET @nPos = 1 -- 구분문자 위치
WHILE (@nPos > 0)
BEGIN
SET @nPos = CHARINDEX(@SplitChar, @StrValue, @oPos )
IF @nPos = 0
SET @TmpVar = RIGHT(@StrValue, LEN(@StrValue)-@oPos+1 )
ELSE
SET @TmpVar = SUBSTRING(@StrValue, @oPos, @nPos-@oPos)
IF LEN(@TmpVar)>0
INSERT INTO @SPLIT_TEMP VALUES( @TmpVar )
SET @oPos = @nPos +1
END
RETURN
END
GO
결과값
2. 문자열을 구분자로 분리하여 특정 Index값만 조회할수있는 함수
-- SELECT [dbo].[FN_Get_Split_Index] ('A|B|C|D|E|F|G|', '|', 2)
ALTER FUNCTION [dbo].[FN_Get_Split_Index]
(
@StrValue VARCHAR(500), -- 대상 문자열
@SplitChar CHAR(1), -- 구분기호
@idx INT -- 배열 인덱스
)
RETURNS NVARCHAR(100)
AS
BEGIN
DECLARE @word CHAR(20), -- 반환할 문자
@sTextData VARCHAR(600),
@num SMALLINT;
SET @num = 1;
SET @sTextData = LTRIM(RTRIM(@StrValue)) + @SplitChar;
WHILE @idx >= @num
BEGIN
IF CHARINDEX(@SplitChar, @sTextData) > 0
BEGIN
-- 문자열의 인덱스 위치의 요소를 반환
SET @word = SUBSTRING(@sTextData, 1, CHARINDEX(@SplitChar, @sTextData) - 1);
SET @word = LTRIM(RTRIM(@word));
-- 반환된 문자는 버린후 좌우공백 제거
SET @sTextData = LTRIM(RTRIM(RIGHT(@sTextData, LEN(@sTextData) - (LEN(@word) + 1))))
END
ELSE
BEGIN
SET @word = NULL;
END
SET @num = @num + 1
END
RETURN(@word);
END
결과값
끝~
반응형
'DataBase > MS SQL' 카테고리의 다른 글
[MSSQL] 부분권한 설정 (0) | 2022.05.27 |
---|---|
[MSSQL] 순번 매기기(Feat. 그룹 별 최상위 데이터 가져오기) (0) | 2022.05.20 |
[MSSQL] 조회 시, ROW <=> COLUMNS 방향 변경 (0) | 2022.04.06 |
[MSSQL] 컬럼의 데이터 번호붙여서 업데이트하기 (0) | 2022.02.08 |
[SQL Query] CASE 식 (Feat. 조건분기) (0) | 2022.01.06 |
Comments