пытаюсь использовать IN в моем предложении WHERE с varchar, но сталкиваюсь с проблемой сортировки - PullRequest
1 голос
/ 31 января 2020

У меня есть две таблицы в моей базе данных прямо сейчас.

Table1
ID        Value1    VText2      VText3      
1         1XX1      text1       text1
2         2XX2      text2       text2
3         3XX3      text3       text3


Table2
ID        OtherValue
1         1XX1
2         2XX2

Это очень упрощенная версия моих таблиц. В двух словах Value1 в Table1 - это varchar, а OtherValue в Table2 - это также Varchar.

Моя цель такова:

SELECT * From TABLE1 where Value1 in (SELECT OtherValue from Table2)

Когда я выполняю это, я сталкиваюсь с этой ошибкой:

Не удается разрешить конфликт сопоставления между «SQL_Latin1_General_CP1_CI_AS» и «SQL_Latin1_General_CP1_CS_AS» в операции, равной операции.

Desired end result:
ID        Value1    VText2      VText3      
1         1XX1      text1       text1
2         2XX2      text2       text2

Я считаю, что это происходит, потому что я использую значения VARCHAR с моим предложением "WHERE IN". Есть ли способ сделать это с varchars?

1 Ответ

1 голос
/ 31 января 2020

Это, очевидно, происходит из-за того, что в двух таблицах параметры сортировки различаются.

Вы можете выполнить преобразование вручную. Непонятно, что вы хотите, но что-то вроде этого:

WHERE Value1 COLLATE SQL_Latin1_General_CP1_CS_AS IN (SELECT OtherValue from Table2)

Обычно для строк в одной и той же базе данных ожидается одинаковое сопоставление. Тем не менее, можно использовать разные параметры сортировки - просто так могут появляться такие ошибки;)

...