سؤال

لدي مجموعة من أعمدة NVARCHAR التي أظن أنها تحتوي على بيانات مخزنة تماما في أعمدة Varchar. ومع ذلك، لا أستطيع أن أذهب وتغيير نوع الأعمدة إلى Varchar والأمل في الأفضل، أحتاج إلى القيام بنوع من الشيكات.

أريد أن أفعل التحويل لأن البيانات ثابتة (لن تتغير في المستقبل) وفهرست الأعمدة وسوف تستفيد من مؤشر أصغر (varchar) مقارنة بفهرس الفعلي (NVARCHAR).

إذا قلت ببساطة

ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200)

ثم لن أحصل على خطأ أو تحذير. سيتم اقتطاع / خسر بيانات Unicode.

كيف يمكنني التحقق؟

هل كانت مفيدة؟

المحلول

لماذا لا يلقي هناك والعودة لمعرفة ما تضيع البيانات؟

هذا يفترض العمود nvarchar (200) لتبدأ

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

نصائح أخرى

هم مثيرة للاهتمام.

لست متأكدا من أنك تستطيع القيام بذلك في استعلام SQL نفسه. هل سعداء أن تفعل ذلك في الكود؟ إذا كان الأمر كذلك، يمكنك الحصول على جميع السجلات، ثم الحلقة على جميع الأحرف في السلسلة والتحقق منها. لكن الرجل انها طريقة بطيئة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top