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
'IT TIP' 카테고리의 다른 글
PHP 날짜는 현재 날짜에 5 년 추가 (0) | 2020.12.13 |
---|---|
npm start가 포트 8000에서 서버를 실행하는 방법 (0) | 2020.12.13 |
뷰에서 컨트롤러의 메서드를 호출 할 수 있습니까 (이상적으로 헬퍼에서 호출)? (0) | 2020.12.13 |
데이터 변경시 $ watch가 실행되지 않음 (0) | 2020.12.13 |
타임 스탬프를 자바 스크립트에서 인간 날짜로 변환하는 기능 (0) | 2020.12.13 |