2009-08-16 4 views
7

VARCHAR 열에 완벽하게 저장 가능한 데이터가 포함되어 있다고 의심되는 NVARCHAR 열이 있습니다. 그러나 나는 열의 타입을 VARCHAR로 바꿀 수없고 최선을 다할 수 없다. 나는 어떤 종류의 수표를 할 필요가있다.nvarchar 열의 varchar 내용 확인

데이터가 정적이어서 (이후에는 변경되지 않음) 열이 인덱싱되고 실제 (nvarchar) 인덱스와 비교하여 더 작은 (varchar) 인덱스의 이점을 얻을 수 있기 때문에 변환을 수행하려고합니다.

단순히

ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200) 

가 나는 오류 또는 경고를받지 않습니다 말한다면. 유니 코드 데이터가 잘 리거나 손실됩니다.

어떻게 확인합니까?

+0

시작하는 NVARCHAR (200)는 이렇게하면 테스트/개발 환경을 가지고? –

+0

직장에서 나는 그것을 사용한다. 하지만 여기서 나는 내 자신의 사용을 위해 작은 것을 함께 치고, 한 번만 사용해야했다. –

+0

google이이 구문을 선택할 수 있습니다. nvarchar에 varchar 데이터 만 포함되어 있는지 테스트 – Thymine

답변

22

무엇을 잃어 버렸는지 확인하기 위해 왜 캐스팅하지 않았습니까?

이것은 열을 가정은

SELECT * 
FROM TableName 
WHERE columnName <> CAST(CAST(columnName AS varchar(200)) AS nvarchar(200)) 
+0

매력처럼 작동했습니다! 감사! –

1

흠 흥미로운.

SQL 쿼리 자체에서이 작업을 수행 할 수 있을지 확신하지 않습니다. 코드로 기꺼이 하시겠습니까? 그렇다면 모든 레코드를 가져온 다음 문자열의 모든 문자를 반복하여 확인하십시오. 그러나 사람은 천천히 방법입니다.