Normalmente cuando se compara cadenas con campos del tipo NCHAR, se muestra el error:
ORA-12704: character set mismatch
O en español:
ORA-12704: no coincide el juego de caracteres
Para evitar este error se puede usar la función CSCONVERT cuya sintaxis es:
CSCONVERT(cadena,'NCHAR_CS')
Donde cadena es el valor que se quiere pasar a NCHAR. Veamos un ejemplo:
Tenemos la tabla TABLA_NCHAR que tiene un solo campo tipo NCHAR:
create table TABLA_NCHAR
(
CAMPO_NCHAR NCHAR(25)
)
Si intentamos hacer el siguiente query:
select campo_nchar from tabla_nchar
UNION
SELECT 'TODOS LOS VALORES' FROM DUAL;
select campo_nchar from tabla_nchar
UNION
SELECT 'TODOS LOS VALORES' FROM DUAL
ORA-12704: character set mismatch
Se mostrará el error indicado al inicio de este blog, pero si se usa la funcion el query funcionará correctamente:
SQL> select campo_nchar from tabla_nchar
2 UNION
3 SELECT CSCONVERT('TODOS LOS VALORES','NCHAR_CS') FROM DUAL;
CAMPO_NCHAR
--------------------------------------------------
TODOS LOS VALORES
VALOR 001
VALOR 002
ORA-12704: character set mismatch
O en español:
ORA-12704: no coincide el juego de caracteres
Para evitar este error se puede usar la función CSCONVERT cuya sintaxis es:
CSCONVERT(cadena,'NCHAR_CS')
Donde cadena es el valor que se quiere pasar a NCHAR. Veamos un ejemplo:
Tenemos la tabla TABLA_NCHAR que tiene un solo campo tipo NCHAR:
create table TABLA_NCHAR
(
CAMPO_NCHAR NCHAR(25)
)
Si intentamos hacer el siguiente query:
select campo_nchar from tabla_nchar
UNION
SELECT 'TODOS LOS VALORES' FROM DUAL;
select campo_nchar from tabla_nchar
UNION
SELECT 'TODOS LOS VALORES' FROM DUAL
ORA-12704: character set mismatch
Se mostrará el error indicado al inicio de este blog, pero si se usa la funcion el query funcionará correctamente:
SQL> select campo_nchar from tabla_nchar
2 UNION
3 SELECT CSCONVERT('TODOS LOS VALORES','NCHAR_CS') FROM DUAL;
CAMPO_NCHAR
--------------------------------------------------
TODOS LOS VALORES
VALOR 001
VALOR 002
Genial!!!
ResponderEliminarGracias, me sirvió, jajajaja, aún 4 años después de esta publicación
Un acierto la solución, me ayudó un montón ahora, en Oracle 10g, Julio 2014.
ResponderEliminarSaludos
Gracias por la solución, sigue siendo muy últil en Mayo de 2015
ResponderEliminarLo mismo digo, muchas gracias.
ResponderEliminarperfecto.. mil gracias por tu aporte..
ResponderEliminarGracias Max!! je je
ResponderEliminarBastante ùtil, Marzo 2019
ResponderEliminarbueno es 2019 y gracias me sirvio!!
ResponderEliminarFunciona, Gracias!
ResponderEliminar