반응형
Oracle에서 문자 집합 불일치 오류
실행하려는 질문이 있습니다.
SELECT Script from (
SELECT 9 as ColOrder, ' INSERT INTO PROJ VALUES(' || ID || ',''' || Name || ''', ''' || Version || ''', ''ABCD'', sysdate , ''ABCD'', sysdate);' as Script FROM PROJ where Name like '%[Param.1]%'
union
SELECT 11 as ColOrder,' INSERT INTO PROJMOD VALUES(' || ID || ', ' || ProjID || ', ' || ModID || ', ' || ObjID || ', ''ABCD'', sysdate, ''ABCD'', sysdate);' as Script FROM PROJMOD where ProjID in ( select ID from PROJ where Name like '%[Param.1]%')
) x
Order by ColOrder
하지만 그것은 나를ORA-12704: character set mismatch error.
두 select 문을 개별적으로 실행하면 적절한 출력이 나오지만 두 select를 결합하면 문자 집합 불일치 오류가 발생합니다.
여기서 뭐가 잘못됐어요?
당신이 확인했듯이 NVARchar'd ..nvarchar를 기소할 것입니다.
SQL> create table tab(a nvarchar2(2));
Table created.
SQL> insert into tab values ('a');
1 row created.
SQL> select 1, 'hi' from dual
2 union all
3 select 2, a from tab;
select 1, 'hi' from dual
*
ERROR at line 1:
ORA-12704: character set mismatch
"A"가 NVARCHAR이므로 실패합니다. 즉, to_charit:
SQL> select 1, 'hi' from dual
2 union all
3 select 2, to_char(a) from tab;
1 'HI'
---------- ----
1 hi
2 a
또는 문자열 리터럴 'hi'를 Nvarchar에 캐스팅합니다.
SQL> select 1, n'hi' from dual
2 union all
3 select 2, a from tab;
1 N'
---------- --
1 hi
2 a
SELECT Script from (
SELECT 9 as ColOrder, ' INSERT INTO PROJ VALUES(' || to_char(ID) || ',''' || to_char(Name) || ''', ''' || to_char(Version) || ''', ''ABCD'', sysdate , ''ABCD'', sysdate);' as Script FROM PROJ where Name like '%[Param.1]%'
union
SELECT 11 as ColOrder,' INSERT INTO PROJMOD VALUES(' || to_char(ID) || ', ' || to_char(ProjID) || ', ' || to_char(ModID) || ', ' || to_char(ObjID) || ', ''ABCD'', sysdate, ''ABCD'', sysdate);' as Script FROM PROJMOD where ProjID in ( select ID from PROJ where Name like '%[Param.1]%')
) x
Order by ColOrder
방금 TO_CHAR 함수를 추가했습니다. 그러면 작동합니다. Oracle에서 암시적으로 캐스트할 수 없는 문자 데이터 유형의 필드가 있으므로 직접 캐스트하면 됩니다. 하지만 캐스트로 인한 문자 손실을 방지할 수 있습니다.
이 오류가 발생하면 두 가지 조건을 살펴봐야 합니다.
- 모든 열 이름 또는 별칭은 모든 테이블에 대해 동일해야 합니다.
- 모든 열은 동일한 유형의 표 A(NVARCHAR2 열), 표 B(NVARCHAR2 열)이어야 합니다.
언급URL : https://stackoverflow.com/questions/13354436/character-set-mismatch-error-in-oracle
반응형
'programing' 카테고리의 다른 글
파이썬에서 파일의 문자열을 어떻게 랩합니까? (0) | 2023.07.25 |
---|---|
파이썬 코드를 효과적으로 난독화하는 방법은? (0) | 2023.07.25 |
대규모 데이터셋을 위한 데이터베이스 설계 (0) | 2023.07.25 |
인텐트(최적의 솔루션)를 통해 열거나 개체 전달 (0) | 2023.07.25 |
오류로 인한 Gulp Watch 깨짐 (0) | 2023.07.25 |