모든칼럼 처리하기 질문 (Replace,trim) 0 1 981

by 임태원 [2017.05.02 19:28:10]


안녕하세요. 고수님들께 질문하나 드립니다.

데이터 I/F 하는 과정에서 기존 데이터를 파일로 떨어뜨렸다가 다시 벌크로 적재를 하고 있습니다.

그 과정에서 화이트스페이스가 들어가는 경우가 발생하는데요..

예를들면

[홍길동] 이라고 표시되는 것이

[홍길동         ]으로 표현됩니다. 물론 대괄호는 제가 구분짓기위해 표시하였습니다.

 

문제는 어떤 칼럼에 화이트스페이스가 포함되어있는지 알기가 어려우며 전체 칼럼(200개)를 하나하나 찾아보기가 힘들어

한꺼번에 처리할 수 있는상황이 있을런지요.

 

200개 중 한 칼럼은 

 SELECT REPLACE(이름,' ','')
FROM 테이블

위와같이 처리하고 있습니다.

200개를 손쉽게 처리가 가능할런지요.

 

by HolyGrail [2017.05.04 14:56:52]
저도 초보지만 한번 작성해봤어요.
SQL Server 기준입니다.


DECLARE
@qry VARCHAR(MAX), -- 쿼리문
@temp VARCHAR(MAX), -- 원래(화이트스페이스 포함) 컬럼명
@temp2 VARCHAR(MAX), -- 알리아스로 쓸(화이트스페이스 지움) 컬럼명
@first INT = 0


DECLARE temp_cur CURSOR FOR  -- 커서 선언
SELECT name
FROM sys.columns
WHERE object_id = (SELECT object_id FROM sys.tables WHERE name = '테이블명') -- 해당 테이블의 컬럼명 
OPEN temp_cur  -- 커서 오픈

SET @qry = 'SELECT '

FETCH NEXT FROM temp_cur INTO @temp
WHILE(@@FETCH_STATUS = 0)
	BEGIN
		SET @temp2 = REPLACE(@temp, ' ', '')  -- 알리아스용
		IF(@first = 0) -- 처음(,없음) 쿼리문 이어붙임
		BEGIN
			SET @qry = @qry + 'REPLACE(' + @temp + ', '' '', '''') AS ' + @temp2
			SET @first = 1
		END

		ELSE
		BEGIN -- 쿼리문 이어붙임
			SET @qry = @qry + ', REPLACE(' + @temp + ', '' '', '''') AS ' + @temp2
		END	

		FETCH NEXT FROM temp_cur INTO @temp
	END

SET @qry = @qry + ' FROM 테이블명' -- 쿼리 마무리 조건절 등 포함

SELECT @qry -- 쿼리문 보기

CLOSE temp_cur
DEALLOCATE temp_cur


EXEC(@qry) -- 작성된 쿼리문 실행

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입