DJ메탈짱™의 Free Style

[ORACLE] ORA-12704 문자 집합이 일치하지 않습니다. nvarchar 컬럼 본문

일(job)/DBMS

[ORACLE] ORA-12704 문자 집합이 일치하지 않습니다. nvarchar 컬럼

뽀&쏭 2016. 1. 18. 17:35



select case when 언어코드없으면 then nvarchar컬럼 else varchar컬럼 end from "varchar+nvarchar컬럼으로 구성된 테이블"


ORA-12704: 문자 집합이 일치하지 않습니다.


nvarchar varchar를 병행하는 경우에 생기는데...

그럴때는 DECODE() 또는 CASE문이 아닌 NVL2()를 사용하면 해결...

 

select

 NVL2(언어코드있으면, nvarchar컬럼, varchar컬럼)

from "varchar+nvarchar컬럼으로 구성된 테이블"

 

그 이외의 방법들에 대한 쿼리도 아래 참고....

언어코드에 따라 다국어인 경우에는 nvarchar 컬럼을 조회하도록...

cast(), unistr(), decode(), nvl2() 등등~

 

select 

    case

        when lang_cd is not null then 'nvarchar 컬럼'

    else cast('varchar 컬럼' as nvarchar2(1000))

    end cast_val,

    decode(lang_cd, '', 'varchar 컬럼', 'nvarchar 컬럼') as decode_val,
   
case
       
when lang_cd is not null then 'nvarchar 컬럼'
   
else unistr('varchar 컬럼')

    end unistr_val,

    nvl2(lang_cd, 'nvarchar 컬럼', 'varchar 컬럼') as nvl2_val   

from 테이블