Конфликт SQL-сопоставлений - PullRequest
0 голосов
/ 03 июля 2018

У меня проблемы с сопоставлением при выполнении запроса SQL, который выглядит следующим образом:

INSERT INTO (table1) (...)
SELECT (...)
FROM (table 2)
WHERE X NOT IN (SELECT Y from (table1)


Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Chinese_PRC_CI_AS" in the equal to operation.

Я вижу решение здесь , но когда я пытаюсь что-то вроде этого:

INSERT INTO (table1) (...)
    SELECT (...)
    FROM (table 2)
    WHERE X NOT IN (SELECT Y from (table1) COLLATE database_default

Я получаю синтаксическую ошибку:

 "Incorrect syntax near the keyword 'COLLATE'."

Кто-нибудь знает, что я делаю не так?

1 Ответ

0 голосов
/ 03 июля 2018

Вы должны двигаться COLLATE:

INSERT INTO (table1) (...)
SELECT (...)
FROM (table 2)
WHERE X NOT IN (SELECT Y COLLATE database_default from table1);

Обратите внимание, что NOT IN может быть сложным, если столбец Y обнуляется. Рекомендуется защитить код, добавив:

WHERE X NOT IN(SELECT Y COLLATE database_default from table1 WHERE Y IS NOT NULL);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...