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

sql de mysql a oracle

Estas en el tema de sql de mysql a oracle en el foro de Oracle en Foros del Web. Tengo una aplicación realizada en jsp contra Mysql y ahora hay que migrarla a Oracle la cuestión es que tengo un par de sentencias sql ...
  #1 (permalink)  
Antiguo 19/07/2006, 12:46
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 3 meses
Puntos: 0
sql de mysql a oracle

Tengo una aplicación realizada en jsp contra Mysql y ahora hay que migrarla a
Oracle la cuestión es que tengo un par de sentencias sql que no funcionan en
oracle, base de datos por cierto en la que estoy pegao.

te reproduzco las sentencias

la primera es:

SELECT DISTINCT LEFT (NOMBRE, 1) AS inicial FROM DE_ENTIDAD ORDER BY NOMBRE

Extrae todas las iniciales, si repetirlas, de un campo de la tabla, con el fin
de hacer búsquedas alfabéticas.
La cuestión es que el comando LEFT no lo reconoce oracle

La segunda es:

SELECT DISTINCT EntidadID, NOMBRE, MATCH(NOMBRE, Acronimo) AGAINST ('" +
empresas__MMColParam +"') As Score FROM oracle.DE_ENTIDAD WHERE MATCH(NOMBRE,
Acronimo) AGAINST ('" + empresas__MMColParam +"') ORDER BY Score DESC,NOMBRE
ASC

esta es un poco mas complicada, busca en la base de datos equivalencias con
una cadena de texto y las ordena por cercanía, con la cadena de texto, y
alfabéticamente, los campos NOMBRE y Acronimo tienen un clave full text.
Creo que oracle no reconoce ni MATCH ni AGAINST

Podeis ayudarme a traducir las sentencias a Oracle

Gracias
  #2 (permalink)  
Antiguo 19/07/2006, 13:34
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola, por mientras te doy la primera solución.....seria:
MySQL
Código:
SELECT DISTINCT LEFT (NOMBRE, 1) AS inicial FROM DE_ENTIDAD ORDER BY NOMBRE
por

Oracle
Código:
SELECT DISTINCT SUBSTR(NOMBRE,1,1) AS inicial FROM 
DE_ENTIDAD 
ORDER BY NOMBRE
Dejame digerir la segunda
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #3 (permalink)  
Antiguo 19/07/2006, 13:56
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 3 meses
Puntos: 0
no funciona el error es ORA-01791: no es una expresión obtenida bajo SELECT
  #4 (permalink)  
Antiguo 19/07/2006, 14:30
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Puedes hacerlo de dos formas:
Cita:
select distinct inicial from
(select distinct nombre,substr(nom,1,1) inicial from tu_tabla
order by nombre) a
o

Código:
SELECT DISTINCT SUBSTR(NOMBRE,1,1) AS inicial FROM 
DE_ENTIDAD 
ORDER BY inicial
El error es que como el campo nombre no esta en el select sin una función que le afecte por eso no se puede ordenar por tal.
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #5 (permalink)  
Antiguo 20/07/2006, 01:07
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 3 meses
Puntos: 0
funciona solo que tiene un pequeño problema me saca una A y una Á, hay forma de que no salgan las lectras acentudas?
  #6 (permalink)  
Antiguo 20/07/2006, 01:32
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 3 meses
Puntos: 0
Por cierto muchas gracias, uno olvida las buenas maneras
  #7 (permalink)  
Antiguo 20/07/2006, 08:40
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola, a cualquiera de los dos le agregas DECODE
Código:
SELECT DISTINCT DECODE(SUBSTR(NOMBRE,1,1),'Á','A','É','E','Í','I','Ó','O','Ú','U',SUBSTR(NOMBRE,1,1)) AS inicial FROM 
DE_ENTIDAD 
ORDER BY inicial
Es como una sentencia IF, y el final vendria a ser como un else u otherwise.
Podrias explicarme un poco más que hace la otra función?.
Saludos, estamos para ayudarnos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #8 (permalink)  
Antiguo 20/07/2006, 10:36
 
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 22 años, 3 meses
Puntos: 0
Te lo agradezco mucho.
la otra funcion hace un busqueda de texto en los campos nombre y acronimo
por ejemplo si buscas empresa el resultado serian todos los registros que contengan 'empresa' tanto en el nombre como en el acronimo, y la ordena segun que el termino se parezca mas a lo que buscas o no, motraria primero los registros que pongan empresa y despues los que contienen empresas o empr etc.
una cosa importante es que no distingue entre mayusculas y minusculas ni palabras acentuadas o no, la consulta EMPRESA, empresa o EmPrEsA daria el mismo resultado
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:42.