이 블로그 검색

2014년 6월 16일 월요일

제거되지 않는 공백


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


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


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


오라클에서 SQL Server로 이관한 데이터에는 겉으로 보기엔 같은 공백,
ASCII 다양한 공백이 포함되어 있었고
REPLACE(컬럼, CHAR(9), '') 와 같은 방법으로 처리
CHAR(32)는 일반적인 공백이므로 REPLACE나 TRIM으로 처리가 가능.


SQL SERVER 에서는 CHAR(9)가 포함된 두 개의 데이터를 구분하지만
SSAS에서 차원처리를 하거나 할때는 같은 데이터로 보고 에러를 낸다.

(키중복 등)

댓글 없음:

댓글 쓰기