SQL ترتيب الصراع عند مقارنة إلى عمود في جدول مؤقت
سؤال
وعندي استفسار SQL الذي يقارن قيمة في قاعدة البيانات إلى ثابت:
SELECT * FROM my_table
INNER JOIN #TempTable tem
ON my_table.id = temp.id
AND my_table.key = 'SOME STRING'
وأحصل على خطأ:
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.
وكيف يمكنني الحصول على حول هذا؟ (بدون إجراء تغييرات على قاعدة البيانات)
وUPDATE: أحصل على هذا الخطأ حتى لو أزيل آخر مثل (المقارنة سلسلة) ...
المحلول
ويبدو في id
الخاصة بك VARCHAR
s مع النسخ مختلفة.
وجرب هذا:
SELECT *
FROM my_table
INNER JOIN
#TempTable tem
ON my_table.id = temp.id COLLATE SQL_Latin1_General_CP1_CI_AS
AND my_table.key = 'SOME STRING'
نصائح أخرى
وحدد الترتيب داخل إعلان جدول مؤقت الخاصة بك.
CREATE TABLE #TempTable (ID NVARCHAR(255) COLLATE database_default)
والمشكلة تكمن في جدول مؤقت. ويستخدم ترتيب نسخ بيانات tempdp.
هل يمكن إنشاء جدول في ديسيبل الفعلي وليس جدول مؤقت ومن ثم سيكون لديهم نفس الترتيب. أو تحديد الترتيب على إنشاء جدول مؤقت.
والمحاولة
SELECT * FROM my_table
INNER JOIN #TempTable temp
ON my_table.id = temp.id collate database_default
AND my_table.key = 'SOME STRING'
لا تنتمي إلى StackOverflow