안녕하세요. 고수님들께 질문하나 드립니다.
데이터 I/F 하는 과정에서 기존 데이터를 파일로 떨어뜨렸다가 다시 벌크로 적재를 하고 있습니다.
그 과정에서 화이트스페이스가 들어가는 경우가 발생하는데요..
예를들면
[홍길동] 이라고 표시되는 것이
[홍길동 ]으로 표현됩니다. 물론 대괄호는 제가 구분짓기위해 표시하였습니다.
문제는 어떤 칼럼에 화이트스페이스가 포함되어있는지 알기가 어려우며 전체 칼럼(200개)를 하나하나 찾아보기가 힘들어
한꺼번에 처리할 수 있는상황이 있을런지요.
200개 중 한 칼럼은
SELECT REPLACE(이름,' ','')
FROM 테이블
위와같이 처리하고 있습니다.
200개를 손쉽게 처리가 가능할런지요.
저도 초보지만 한번 작성해봤어요. 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) -- 작성된 쿼리문 실행