열 정의를 필드의 최대 길이로 변경하는 코드를 동적으로 만들려고합니다.동적 T-SQL - 필드의 최대 길이로 열 정의 변경
데이터베이스의 내용은 변경되지 않습니다.
여기까지 제가 가지고있는 것이지만, 최대 길이 쿼리를 별도로 실행하여 숫자를 얻을 수는 없습니다. 내가 어디로 잘못 가고 있니?
감사합니다.
DECLARE @SQL_STMT VARCHAR(MAX) = 'DECLARE @query nvarchar(max);'
SELECT @SQL_STMT = @SQL_STMT
+ 'SET @query =''ALTER TABLE '
+ TABLE_NAME
+ ' ALTER COLUMN '
+ COLUMN_NAME
+ ' '
+ DATA_TYPE
+ '('' +CAST((SELECT MAX(DATALENGTH('
+ COLUMN_NAME
+ ')) FROM '
+ TABLE_NAME
+ ') as nvarchar(max))+'') ''
exec(@query);'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'nvarchar'
PRINT(@SQL_STMT)
당신은 얼마나 많은 길이 개까지 VARCHAR의 열을 변경하려면 ??? 이것은 정확히 당신이 뭘하고 싶어하는지 명확하지 않습니다 ?? –
단일 필드의 최대 길이까지. 예를 들어, emp에서 max (len (empname))를 선택하십시오 –
왜 세계에서이 작업을 수행합니까? 이로 인해이 데이터베이스를 사용하는 응용 프로그램이 손상 될 수 있습니다. 프런트 엔드에 유효성 검사가 있기 때문에 데이터 오류가 잘릴 수 있습니다. 당신은 단지 varchar 컬럼을 변경하기 때문에 당신은 아무것도 얻지 못할 것입니다. 후행 공백을 고려하지 않은 LEN을 사용하기 때문에 오류가 발생할 수 있음은 물론입니다. –