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

registro aleatorio en oracle

Estas en el tema de registro aleatorio en oracle en el foro de Oracle en Foros del Web. Hola amigos, tal cual para uin concurso necesito encontrar un registro en forma aleatoria. Atte Mauricio...
  #1 (permalink)  
Antiguo 07/04/2006, 07:33
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 0
De acuerdo registro aleatorio en oracle

Hola amigos, tal cual para uin concurso necesito encontrar un registro en forma aleatoria.
Atte
Mauricio
__________________
Dios es mas grande que tu problema :-)
  #2 (permalink)  
Antiguo 07/04/2006, 07:49
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 0
Un ejemplo:
select dbms_random.value(100000000000, 999999999999) num from dual;

mas detalle en:

http://www.databasejournal.com/featu...le.php/3341051

http://www.dbazine.com/olc/olc-articles/nanda13


Atte
Mauricio
__________________
Dios es mas grande que tu problema :-)

Última edición por maurimono; 07/04/2006 a las 17:10
  #3 (permalink)  
Antiguo 07/04/2006, 12:14
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 0
encontre la funcion pero no se como usarla para buscar un registro aleatorio
Alguien sabe como se usa


SELECT dbms_random.string('U', premio_dupli.rut)
FROM tabla;


Atte
Mauricio
__________________
Dios es mas grande que tu problema :-)
  #4 (permalink)  
Antiguo 07/04/2006, 17:43
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 0
por fin resulto!!
aqui esta la query:


select * from premio_dupli where num in (select TO_CHAR(TRUNC(dbms_random.VALUE(1,22178))) from dual)


lo que hace es buscar un numero, que es autoincrmentable...(uf...) entre varios
Atte
Mauricio
__________________
Dios es mas grande que tu problema :-)
  #5 (permalink)  
Antiguo 07/04/2006, 20:09
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 17 años, 4 meses
Puntos: 11
el principal problema que tienes con esa sentencia es que NUM (campo de la tabla donde buscas) debe estar comprendido y existir entre 1 a 22178. Te lo extrae si tienes dicha tupla en la tabla pero si el random te arroja un numero que no tienes en NUM te dara NULL

Creo que te puede servir mas este

SELECT columna FROM ( SELECT columna FROM tabla ORDER BY dbms_random.value ) WHERE rownum = 1
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #6 (permalink)  
Antiguo 08/04/2006, 09:52
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 0
Lo que pasa es que me hice un procedimiento para llanar un campo con valores desde 0 a 'n' entonces:

segun la documentacion que lei, la instruccion

(TRUNC(dbms_random.VALUE(1,22178))

te entrega valores entre esos rangos "siempre". tabla fue poblada en base a una consulta, entonces siempre hay registros o coincidencias.
Otra cosa importante es decir que al hacer
select rownum from tabla where algo=algo te entrega el autoincrement inplicito que tiene oracle para las tablas.
__________________
Dios es mas grande que tu problema :-)
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 03:37.