2009-08-16 30 views
7

Tôi có một loạt các cột NVARCHAR mà tôi nghi ngờ chứa dữ liệu hoàn toàn có thể lưu trữ trong cột VARCHAR. Tuy nhiên tôi không thể đi và thay đổi kiểu cột thành VARCHAR và hy vọng điều tốt nhất, tôi cần thực hiện một số kiểm tra.Xác định nội dung varchar trong cột nvarchar

Tôi muốn thực hiện chuyển đổi vì dữ liệu tĩnh (không thay đổi trong tương lai) và các cột được lập chỉ mục và sẽ được hưởng lợi từ chỉ mục nhỏ hơn (so với chỉ số thực tế).

Nếu tôi chỉ đơn giản nói

ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200) 

sau đó tôi sẽ không nhận được một lỗi hoặc một cảnh báo. Dữ liệu Unicode sẽ bị cắt bớt/mất.

Tôi làm cách nào để kiểm tra?

+0

làm bạn có môi trường thử nghiệm/phát triển? –

+0

Ở nơi làm việc tôi làm và sử dụng nó. Nhưng ở đây tôi cần phải tát một cái gì đó nhỏ với nhau để sử dụng riêng của tôi, một thời gian chỉ sử dụng. –

+0

Hy vọng google có thể chọn cụm từ này: Kiểm tra nếu nvarchar chỉ chứa dữ liệu varchar – Thymine

Trả lời

22

Tại sao không truyền ở đó và quay lại để xem dữ liệu nào bị mất?

này giả định cột là nvarchar (200) để bắt đầu với

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

Làm việc như một sự quyến rũ! Cảm ơn! –

1

Hmm thú vị.

Tôi không chắc chắn bạn có thể thực hiện việc này trong chính truy vấn SQL. Bạn có hạnh phúc để làm điều đó trong mã? Nếu vậy, bạn có thể nhận được tất cả các bản ghi, sau đó lặp qua tất cả các ký tự trong chuỗi và kiểm tra. Nhưng người đàn ông đó là một cách chậm chạp.

Các vấn đề liên quan