Error en consulta

29/05/2007 - 22:38 por Geovanny Castillo | Informe spam
Amigos, realmente no se que sucede con la siguiente consulta que estoy
realizando y quisiera saber por que me da error.

Tengo dos bdd completamente iguales, bd1 y bd2

En la bd1 hago la siguiente consulta:

SELECT b.empresa, a.codcta AS cuenta, a.nomcta, a.flujocaja, b.orden, 0
as pspto, 0 as acum
FROM contplancuentas a,
(SELECT b.cuenta, b.empresa, b.orden
FROM dbo.qry_cuentas b
WHERE len(b.cuenta) = 4) as b
WHERE a.codcta LIKE (b.cuenta + '%') and
len(a.codcta) = 13 AND
a.empresa = b.empresa and
a.flujocaja <> ''

La ejecuto y funciona tranquilamente.

Pero al cambiar a la bd2 y ejecutar la consulta me da el siguiente error:

"Servidor: mensaje 446, nivel 16, estado 9, línea 1
No se puede resolver el conflicto de intercalación para el operador like."

Ya comprobé que el query de donde tomo los datos sea igual, además de
comprobar que la estructura de las tablas sea igual.

No sé porque en una bdd si funciona y en la otra no.

Por favor necesito de su ayuda.

Gracias de antemano
 

Leer las respuestas

#1 Juan Manuel
29/05/2007 - 22:51 | Informe spam
Geovanny,

La intercalación predefinida de las bases de datos son diferentes. Si
están en diferentes servidores puede ser también la intercalación
predefinida del servidor.

Para resolverlo solamente tienes que forzar el uso de una determinada
intercalación en el LIKE de la siguiente forma

SELECT b.empresa, a.codcta AS cuenta, a.nomcta, a.flujocaja, b.orden,
0
as pspto, 0 as acum
FROM contplancuentas a,
(SELECT b.cuenta, b.empresa, b.orden
FROM dbo.qry_cuentas b
WHERE len(b.cuenta) = 4) as b
WHERE a.codcta LIKE (b.cuenta + '%') COLLATE
SQL_Latin1_General_CP1_CI_AS and
len(a.codcta) = 13 AND
a.empresa = b.empresa and
a.flujocaja <> ''


Salud2

Juan Manuel Pérez Mojica
.NET Blog: http://netpworld.blogspot.com



On 29 mayo, 15:38, Geovanny Castillo
wrote:
Amigos, realmente no se que sucede con la siguiente consulta que estoy
realizando y quisiera saber por que me da error.

Tengo dos bdd completamente iguales, bd1 y bd2

En la bd1 hago la siguiente consulta:

SELECT b.empresa, a.codcta AS cuenta, a.nomcta, a.flujocaja, b.orden, 0
as pspto, 0 as acum
FROM contplancuentas a,
(SELECT b.cuenta, b.empresa, b.orden
FROM dbo.qry_cuentas b
WHERE len(b.cuenta) = 4) as b
WHERE a.codcta LIKE (b.cuenta + '%') and
len(a.codcta) = 13 AND
a.empresa = b.empresa and
a.flujocaja <> ''

La ejecuto y funciona tranquilamente.

Pero al cambiar a la bd2 y ejecutar la consulta me da el siguiente error:

"Servidor: mensaje 446, nivel 16, estado 9, línea 1
No se puede resolver el conflicto de intercalación para el operador like."

Ya comprobé que el query de donde tomo los datos sea igual, además de
comprobar que la estructura de las tablas sea igual.

No sé porque en una bdd si funciona y en la otra no.

Por favor necesito de su ayuda.

Gracias de antemano

Preguntas similares