viernes, 19 de octubre de 2012

No se puede realizar la conversión implícita del valor varchar a varchar porque la intercalación...

Al realizar una consulta sobre SQL Server podemos encontrarnos con el error "No se puede realizar la conversión implícita del valor varchar a varchar porque la intercalación del valor no está resuelta a causa de un conflicto de intercalación"; esto se debe a que estamos operando con columnas con diferente intercalación. Veamos algunos ejemplos de consultas que pueden originar este mensaje, supongamos que las columnas "c1" y "c2" tienen distinta intercalación, obtendremos el mensaje "No se puede realizar la conversión implícita del valor varchar a varchar porque la intercalación..." anteriormente mencionado en consultas del estilo:
-- Uso de UNION ALL...
SELECT t1.c1 AS c 
FROM t1
UNION ALL
SELECT t2.c2 AS c 
FROM t2

-- Uso de JOINs...
SELECT t1.c1 
FROM t1 
LEFT JOIN t2 on (t1.c1 = t2.c2)

-- Operaciones con columnas, por ejemplo, concatenación...
SELECT t1.c1 + ' ' + t2.c2
FROM t1
LEFT JOIN t2 on (t1.c3 = t2.c3)

-- ...
Bien, ¿y cómo solucionamos el problema? Principalmente encontramos 2 opciones:
  1. Cambiar la intercalación a 1 de las columnas siempre y cuando sea posible: nuestro usario de SQL Server tiene los permisos adecuados y el cambio no supone una pérdida de datos (el caso, por ejemplo, de 2 columnas con diferente intercalación porque guardan información en distintos idiomas). Podemos cambiar la intercalación de una columna con la consulta:
    -- Cambiar intercalación base una columna
    ALTER TABLE t1
    ALTER COLUMN c1 tipo_columna_c1 COLLATE intercalacion_columna_c2
    GO
    
  2. Especificar la intercalación en la consulta sin modificarla en las columnas. Volviendo a uno de los ejemplos iniciales, especificando la intercalación tendríamos:
    -- Uso de UNION ALL...
    SELECT t1.c1 COLLATE intercalacion_columna_c2 AS c 
    FROM t1
    UNION ALL
    SELECT t2.c2 AS c
    FROM t2
    
Relacionado con este tema os recomiendo que consultéis la entrada Búsquedas con acentos en SQL Server ya que encontraréis información al respecto. Recordad también que dentro de areaTIC puedes encontrar otros artículos interesantes, no dudes en consultar nuestro archivo.


LECTURAS RELACIONADAS RECOMENDADAS POR AREATIC.NET

No hay comentarios:

Publicar un comentario