2011년 3월 13일 일요일

특수문자 공백데이터 제거

SELECT 문으로 봤을때 462  라고만 나오고 
REPLACE(컬럼,' ', '') 또는 LTRIM,RTRIM 사용해도 
제대로 제거되지 않는 공백이 포함되어 있는 데이터의
ASCII 코드를 살펴보니 아래와 같은 데이터들이 포함.

SET TEXTSIZE 0
SET NOCOUNT ON
DECLARE @position int, @string char(15)
SET @position = 1
SET @string = (select TESTCOL  from TESTTBL where ~~~ )
WHILE @position <= DATALENGTH(@string)
   BEGIN
   SELECT ASCII(SUBSTRING(@string, @position, 1)),
      CHAR(ASCII(SUBSTRING(@string, @position, 1)))
    SET @position = @position + 1
   END
SET NOCOUNT OFF
GO


-- 결과 --------
----------- ----
52          4   
----------- ----
54          6   
----------- ----
50          2   
----------- ----
9              
----------- ----
32              
----------- ----
32              
----------- ----
32              
----------- ----
32              

오라클에서 SQL Server 이관한 데이터에 종종 애매한 공백들이 포함되어 있다.
CHAR(32) REPLACE TRIM으로 처리가 가능한 Space.
CHAR(9) TRIM으로 처리가 되지 않으며 REPLACE(컬럼, CHAR(9), '') 같은 방법으로 처리.

char(9)인 공백이 컬럼에 포함됐을 경우 SSAS에서 차원처리시 중복에러를 내기도 한다.

댓글 없음:

댓글 쓰기