SQL ترتيب الصراع عند مقارنة إلى عمود في جدول مؤقت

StackOverflow https://stackoverflow.com/questions/1404880

  •  05-07-2019
  •  | 
  •  

سؤال

وعندي استفسار 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 الخاصة بك VARCHARs مع النسخ مختلفة.

وجرب هذا:

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'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top