INFORMATION_SCHEMA의 시스템보기를 반복하고 동적 SQL을 실행하여 수행 할 수 있습니다. 관련보기는 INFORMATION_SCHEMA.COLUMNS 여야합니다.
더 나은 접근 방법은 값을 표시해야 할 때 UI를 처리하는 것입니다. 나중에 DB에 값이 들어 가지 않도록하는 방법이 있습니까? 당신이 큰 테이블이있는 경우
DECLARE
@table_schema SYSNAME,
@table_name SYSNAME,
@column_name SYSNAME,
@cmd VARCHAR(MAX)
DECLARE cur_string_columns AS
SELECT
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
DATA_TYPE IN ('VARCHAR', 'CHAR') AND -- NVARCHAR and NCHAR?
CHARACTER_MAXIMUM_LENGTH > 1
OPEN cur_string_columns
FETCH NEXT FROM cur_string_columns INTO @table_schema, @table_name, @column_name
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT @cmd = 'UPDATE
' + QUOTENAME(@table_schema) + '.' + QUOTENAME(@table_name) + '
SET ' + QUOTENAME(@column_name) + ' = REPLACE(' + QUOTENAME(@column_name) + ', CHAR(13) + CHAR(10), CHAR(10))'
EXEC(@cmd)
FETCH NEXT FROM cur_string_columns INTO @table_schema, @table_name, @column_name
END
CLOSE cur_string_columns
DEALLOCATE cur_string_columns
이 실행하는 데 시간이 오래 걸릴 수 있습니다 :
다음은 시작하는 할 몇 가지 샘플 코드입니다. 또한 최적으로 테이블의 각 문자열 열에 대해 한 번 업데이트하는 동안 각 테이블을 한 번만 업데이트합니다. 대형 데이터베이스에서이 작업을 수행했다면 커서를 테이블 스키마 및 테이블 이름으로 정렬하고 테이블의 각 열에 대한 문자열의 SET 부분을 추가 한 다음 EXEC (@ cmd)를 사용하여 테이블을 변경 한 다음 SET 문자열을 다시 설정하십시오.
굉장한 아이디어, 나는 창의력과 간결함을 좋아합니다. 고맙습니다. 참고 : "my.schema-1 ','my_schema_2 ', ...)의 sc.name 위치를 양식의 맨 아래에 추가하여 내 스키마로 제한했습니다. 또한 첫 번째 줄의 문자열 끝에 세미콜론을 추가하여 쿼리 창에서 결과를 붙여 넣을 수있었습니다. –