Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Ayuda para sentencia CAST

Estas en el tema de Ayuda para sentencia CAST en el foro de Oracle en Foros del Web. Hola gente: Les pido ayuda para migrar esta sentencia: SELECT rm.id_grupo_morfologia, rm.id_razgo_morfologico, gm.desc_grupo_morfologia, rm.desc_razgo_morfologico FROM CFG_GRUPOS_MORFOLOGIAS gm INNER JOIN CFG_RAZGOS_MORFOLOGICOS rm ON gm.id_grupo_morfologia=rm.id_grupo_morfologia WHERE 1 ...
  #1 (permalink)  
Antiguo 13/02/2011, 05:46
 
Fecha de Ingreso: mayo-2007
Ubicación: Córdoba, Argentina
Mensajes: 56
Antigüedad: 17 años, 7 meses
Puntos: 1
Ayuda para sentencia CAST

Hola gente:

Les pido ayuda para migrar esta sentencia:

SELECT rm.id_grupo_morfologia, rm.id_razgo_morfologico, gm.desc_grupo_morfologia, rm.desc_razgo_morfologico
FROM CFG_GRUPOS_MORFOLOGIAS gm
INNER JOIN CFG_RAZGOS_MORFOLOGICOS rm ON gm.id_grupo_morfologia=rm.id_grupo_morfologia
WHERE 1 = 1
AND upper(gm.desc_grupo_morfologia) LIKE upper('%pierna-izq%')
AND cast(rm.id_grupo_morfologia AS varchar) + '-' + cast(rm.id_razgo_morfologico AS varchar) != '41-2'


a Oracle que funciona en SQL SERVER pero que en ORACLE me dice que falta el parantesis izquierdo (ora-00960).
Si le pongo paréntesis a varchar como por ejemplo varchar(10) me dice que el error es por número no válido (ora-01722)

Un abrazo

Adrian
  #2 (permalink)  
Antiguo 14/02/2011, 07:42
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Ayuda para sentencia CAST

Veo que tratas de concatenar con +.
En oracle la concatenación se hace con ||.

El resto de la sentencia la veo muy estandar.

Nos cuentas como te va.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 14/02/2011, 12:49
 
Fecha de Ingreso: mayo-2007
Ubicación: Córdoba, Argentina
Mensajes: 56
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Ayuda para sentencia CAST

Hola huesos:

Tenés razón con lo de la concatenación pero lo probé y me sigue dando el error de que falta el paréntesis izquierdo.

Ya lo solucioné con la sentecia MINUS así:

SELECT rm.id_grupo_morfologia, rm.id_razgo_morfologico, gm.desc_grupo_morfologia, rm.desc_razgo_morfologico
FROM rasgos_morfologicos.CFG_GRUPOS_MORFOLOGIAS gm
INNER JOIN rasgos_morfologicos.CFG_RAZGOS_MORFOLOGICOS rm ON gm.id_grupo_morfologia=rm.id_grupo_morfologia
WHERE 1 = 1
AND upper(gm.desc_grupo_morfologia) LIKE upper('%pierna-izq%')
minus (select rm1.id_grupo_morfologia, rm1.id_razgo_morfologico, gm1.desc_grupo_morfologia, rm1.desc_razgo_morfologico
from rasgos_morfologicos.cfg_razgos_morfologicos rm1
inner join rasgos_morfologicos.CFG_GRUPOS_MORFOLOGIAS gm1 on gm1.id_grupo_morfologia=rm1.id_grupo_morfologia
where rm1.ID_GRUPO_MORFOLOGIA=41 and rm1.ID_RAZGO_MORFOLOGICO=4)

Es más largo pero funciona.

Un abrazo
  #4 (permalink)  
Antiguo 14/02/2011, 14:14
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Ayuda para sentencia CAST

Hola adriannjimenez

te contesto también en este foro jejeje... en Oracle no hay necesidad de hacer las conversiones explícitas para poder concatenar dos campos (ese detalle es exclusivo de SQL Server). En Oracle puedes concatenar campos texto y numéricos sin ningún problema, de tal manera que tu WHERE podría dejar así:

Código:
WHERE 1 = 1
AND upper(gm.desc_grupo_morfologia) LIKE upper('%pierna-izq%')
AND rm.id_grupo_morfologia || '-'  || rm.id_razgo_morfologico  != '41-2'
Si te arroja algún error este no se debe a las conversiones, revisa bien la línea en donde marca el problema. En lo particular no veo ningún problema, pero pruébalo y nos comentas.

Saludos
Leo.
  #5 (permalink)  
Antiguo 14/02/2011, 18:53
 
Fecha de Ingreso: mayo-2007
Ubicación: Córdoba, Argentina
Mensajes: 56
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Ayuda para sentencia CAST

Leonardo:

Anduvo bárbaro. Muchas gracias por la mano.

Un abrazo a todos.

Adrian

Etiquetas: cast, sentencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:49.