SQL Server에서 서로 다른 데이터 집합을 가진 두 데이터베이스에서 조인을 수행하고 오류가 발생하는 경우
알아요, 저는 제가 질문에 쓴 것으로 놀라지 말아야 한다는 것을 알고 있어요.하지만 제 상황은 상속된 POS 시스템에서 서서히 작동하고 있고 이전 페이지는 JOIN을 인식하지 못했기 때문에 60초 동안 로드되는 내부 페이지 중 하나를 조사했을 때 이 8개의 쿼리를 JOIN 상황과 함께 하나의 쿼리로 재작성하는 것이 상당히 빠르다는 것을 알 수 있습니다.문제는 JOIN에 대해 모르는 것 외에도 여러 데이터베이스에 대한 페티시를 가지고 있는 것으로 보이며 놀랍게도 그들이 서로 다른 조합을 사용한다는 것입니다.사실 우리는 영어를 사용하는 사람들이 전체 알파벳으로 간주하는 모든 "일반" 라틴 문자를 사용하고 이 전체는 몇 달 안에 사용되지 않을 것이기 때문에 반창고만 있으면 됩니다.
요약하자면, 두 데이터베이스의 두 필드를 비교할 수 있도록 단일 데이터 집합에 캐스트할 수 있는 방법이 필요합니다.
정확한 오류:
"SQL_Latin1_General_" 간의 데이터 정렬 충돌을 해결할 수 없습니다.CP850_CI_AI" 및 "SQL_Latin1_General_CP1_"CI_AS"는 연산과 같습니다.
쿼리에서 collate 절을 사용할 수 있습니다(지금은 예를 찾을 수 없으므로 구문이 잘못되었을 수 있습니다. 올바른 방향을 가리켰으면 합니다.)
select sone_field collate SQL_Latin1_General_CP850_CI_AI
from table_1
inner join table_2
on (table_1.field collate SQL_Latin1_General_CP850_CI_AI = table_2.field)
where whatever
일반적인 방법은 데이터 정렬을 DATABASE_DEFAULT로 강제 적용하는 것입니다.이렇게 하면 변경될 수 있는 데이터 정렬 이름의 하드 코딩이 제거됩니다.
또한 임시 테이블 및 테이블 변수, 서버 조합을 모를 수 있는 경우(예: 고객의 서버에 시스템을 배치하는 공급업체)에도 유용합니다.
select
sone_field collate DATABASE_DEFAULT
from
table_1
inner join
table_2 on table_1.field collate DATABASE_DEFAULT = table_2.field
where whatever
언급URL : https://stackoverflow.com/questions/2290753/doing-a-join-across-two-databases-with-different-collations-on-sql-server-and-ge
'sourcecode' 카테고리의 다른 글
여러 열에 대한 SQL 순서 지정 (0) | 2023.06.28 |
---|---|
devtools 패키지 설치 문제 (0) | 2023.06.28 |
MongoDB: 경로에 위치(예: '$') 요소가 너무 많습니다. (0) | 2023.06.23 |
roxygen2를 사용하여 예제를 실행하지 않는 방법은 무엇입니까? (0) | 2023.06.23 |
메서드 이름 끝에 있는 물음표는 루비에서 무엇을 의미합니까? (0) | 2023.06.23 |