2016-11-03 4 views
1

SSMS 2016 txt 파일 (쉼표로 구분 된 "텍스트 한정자")로 가져오고 있지만 텍스트 내에는 "혼란을 일으키는"것이 많이 있습니다.TSQL trim columns/table

그래서이 항목을 쉼표로 구분하여 가져오고 오류없이 모두보기 좋습니다. 열 (들) 예처럼이를 청소하는 사용

"Ab-123-2  " 
"wheel 17" " 
"hello "world"  " 

는 :

UPDATE table1 
SET [Column 1] = STUFF([Column 1], 1, 1, '') 
WHERE [Column 1] LIKE '"%' 

UPDATE table1 
SET [Column 1] = REVERSE(STUFF(REVERSE([Column 11]), 1, 1, '')) 
WHERE [Column 1] LIKE '%"' 

이 잘 작동하는 것 같군. 컬럼의 각 행에서 "처음이자 마지막 제거 내 질문은, 내가 약 40 열이이 테이블에 전체 테이블에 대해 (1-40 모든 열)이 실행하는 방법

이다 1?

[Column 1]부터 [Column 2], [Column 3] 등으로 수동으로 변경할 수는 있지만 시간이 오래 걸리므로 앞으로 몇 번 반복해야합니다.

알아두면 좋을 것입니다. 한 번에이 모든 작업을 수행하는 방법

감사합니다.

+1

동적 SQL에서 선택한 열 이름을 통해 당신 루프 가정 테이블 스키마, 일련의 UPDATE 문을 문자열로 작성한 다음,'EXECUTE'로 실행하십시오. – dlatikay

+0

@dlatikay가 말한 것과 테이블 스키마를 사용하여 40 개 이상의 갱신 문으로 구성된 스크립트를 생성하십시오. –

+0

빠른 응답을 보내 주셔서 감사합니다 :) 나는 아직도 TSQL 초보자이며이 스크립트는 내가 게시 한 내용 중 일부를 "리메이크"한 것입니다. 글타래의 의미는 무엇인지 모르겠지만 지금 찾고있는 글입니다. – hyprex

답변

0

Afte R 당신은 당신이

UPDATE Table1 
SET Column1 = RTRIM(LTRIM(REPLACE(Column1,'"',''))), 
    Column2 = RTRIM(LTRIM(REPLACE(Column2,'"',''))), 
    ..., 
    ColumnN - RTRIM(LTRIM(REPLACE(ColumnN,'"',''))) 
WHERE... 

내가 40 개 컬럼을 위해 그것을 할 수있는 좀 더 과세 실감 않습니다 사용할 수있는 테이블에 데이터를 가져하지만 동적 SQL을 사용하는 것보다 쉽게하고 그냥 붙여 넣기를 복사하거나 할 수 그것을 빨리 대체 할 대체품. 당신은 다음과 같은 사용자의 업데이트 쿼리 만들기 동적 SQL을 사용할 수 있습니다

+0

어떻게 그 따옴표 (''')를 제거합니까? – HABO

+0

@HABO 견적을 없애기 위해 편집했습니다. –

0

:이 예에서

는 그 테이블 이름이 compute_node

 DECLARE @QUERY as VARCHAR(MAX) 
     DECLARE @TABLENAME AS VARCHAR(50) 

     SET @TABLENAME = 'compute_node' 
     SET @QUERY = 'UPDATE [' + @TABLENAME + '] SET ' 

     SELECT @QUERY = @QUERY + '[' + COLUMN_NAME + '] = LTRIM(RTRIM(REPLACE([' + COLUMN_NAME + '],''"'',''''))) ,' 
     FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TABLENAME 

     SELECT @QUERY = SUBSTRING(@QUERY, 1 , LEN(@QUERY) - 1) 

     EXEC (@QUERY)