2012-04-11 2 views
0

약 50 개의 열이있는 15 개의 SQL Server 테이블이 있습니다.잘못된 데이터가있는 모든 열 반환 SQL Server 2005 쿼리

일부 열에는 따옴표, 쉼표 및 탭이 포함되어 있습니다.

나는 열 이름이 주어진 행에서 이들 모두를 제거하는 기능이 있지만 어떤 열에 문제가 있는지 알 수 없습니다.

테이블 이름이 잘못된 데이터가있는 열 이름을 반환 할 수있는 SQL Server 2005 쿼리를 원합니다.

답변

4

일종의 동적 SQL 없이는이 작업을 수행 할 수 없습니다. 그 농구를 뛰어 넘는 대신, 보통 내가하는 일은 또 다른 스크립트를 생성하는 스크립트를 작성하는 것입니다.

첫째, 스크립트의 개요 :

SELECT 'IF EXISTS (SELECT * FROM [' + TABLE_NAME + ']' + 
    ' WHERE [' + COLUMN_NAME + '] like ''%,%''' + 
    ' or [' + COLUMN_NAME + '] like ''%''''%''' + 
    ' or [' + COLUMN_NAME + '] like ''%'' + char(9) + ''%'')' + 
    ' insert into @cols values (''' + COLUMN_NAME + ''')' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Tablename' and DATA_TYPE in ('char','varchar') 

그것은 단지입니다 :

declare @cols table (name varchar(500)) 
... 
select * from @cols 

이 그런 나쁜 값에 대한 각 열을 확인합니다 일련의 명령문을 생성하기 위해이 같은 쿼리를 사용 이 쿼리를 실행 한 다음 스크립트에 결과를 붙여 넣고 실행하십시오. 한 번에 여러 테이블에서 작업 할 수 있도록이를 쉽게 수정할 수도 있습니다.

+0

SQL로 SQL 코드를 생성하는 것은 항상 좋은 트릭입니다. nvarchar를 잊지 마십시오. – usr