2013-06-17 4 views
1

나는 모두 알아낼 수없는 매우 직선적 인 질문 인 것 같습니다. 예를 들어 T6L 7H5과 같은 텍스트 문자열이있는 경우 SQL을 사용하여이 문자열에서 내부 공백을 제거하여 T6L7H5과 같이 표시해야합니다. 고려해야 할SQL을 사용하여 텍스트 데이터의 내부 공백을 제거하십시오.

것들 :

  • 테라 데이타 (v.13.10는) 너무 REPLACE('T6L 7H5', ' ', '')가 여기에 옵션이 아닌, 내 RDBMS입니다.
  • 이 특정 서버에서 나는 비즈니스 사용자가 매우 제한적이며 권한이 있으므로 UDF를 만들 수도 없습니다.
+0

oreplace()를 사용해 보셨나요? –

+0

Teradata 13을 실행 중이므로 'oreplace()'는 옵션이 아닙니다. – ChrisCamp

+2

해당 버전에서 위치 및 하위 문자열을 사용할 수 있습니까? –

답변

1

단일 공백의 경우 POSITION()SUBSTRING()을 사용할 수 있습니다. POSITION() 함수가 반환하는 공백 위치를 오프셋해야합니다.

WITH CTE(FieldName) AS 
    (SELECT 'TB7 TCH' AS FieldName) 
    SELECT SUBSTRING(FieldName FROM 1 FOR (POSITION(' ' IN FieldName) - 1)) 
      || SUBSTRING(FieldName FROM (POSITION(' ' IN FieldName) + 1)) 
    FROM CTE; 
0

시도해보십시오 substr(); 예 : 4 = 위치 4에서 시작 & & 1 = 하나의 문자 삭제.

substr(Table1.fieldname, 4,1) 
2

이 테스트, 그래서 침을-볼링을,하지만 당신은 하위 문자열 및 위치 활용할 수 있어야 할 수 없습니다

SELECT SUBSTRING('T6L 7H5', 1, POSITION (' ' IN 'T6L 7H5')-1) || SUBSTRING('T6L 7H5', POSITION (' ' IN 'T6L 7H5')+1, CHARACTER_LENGTH('T6L 7H5') - POSITION (' ' IN 'T6L 7H5')) 

필드가 지속적으로 다음 예처럼 포맷 된 경우를 :

substring('T6L 7H5',1,3)||substring('T6L 7H5',4,3) 
+0

염소만을 제거 할 수 있어야합니다. 게시 한 코드에 작은 구문 오류가 있습니다. 하지만 약간의 변경 (게시물 편집)을했고 나에게 맞는 대답을 얻습니다. 감사 – ChrisCamp

관련 문제