hola amigos como puedo generar un valor aleatoriamente valores que solo sean 'A' y 'D'
en mysql
gracias de antemano
| |||
Respuesta: generar valores alatorios gracias por responder pero mi pregunta es simple como ago para k me genere aleatoriamente estas dos letras A y D es algo mas o menos para esto CREATE PROCEDURE venta() BEGIN DECLARE i INT DEFAULT 1; declare tipoventa int; declare letraaleatorio char(1); WHILE (i<=5) DO set tipoventa=1+ROUND(RAND()*(2-1));/*GENERA NUMERO ALEATORIO ENTRE 1 Y 2*/ set fecha =str_to_date(concat(floor(1 + rand() * (12-1)),'-',floor(1 + rand() * (28 -1)),'-','2011'),'%m-%d-%Y'); set letraaleatorio=K FUNCION O K PONGO PARA K ME GENERE ENTRE A Y D <<<<<<<<<<<<<<<<<<<<<<<<<<<<< IF tipoventa=1 then/*1 ES TIPO DE VENTA CREDITO*/ INSERT INTO venta(Tip_Venta,estado_venta,cod_Usuario,monto_ven ta,interes,descuento,fecha_venta,turno_venta,hora_ venta) VALUES(tipoventa,'0012009',letraaleatorio,10.000,0 .200,0.000,fecha,2,'11:56 AM'); ELSE INSERT INTO venta(Tip_Venta,estado_venta,cod_Usuario,monto_ven ta,interes,descuento,fecha_venta,turno_venta,hora_ venta) VALUES(tipoventa,'0012009',letraaleatorio,10.000,0 .000,0.000,fecha,2,'11:56 AM'); END IF; SET i=i+1; END WHILE; END Última edición por levital; 12/11/2011 a las 17:59 |
| ||||
Respuesta: generar valores alatorios Vamos desde el comienzo: 1) Las funciones aleatorias no devuelven caracteres. Sólo lo numérico es aleatorio, por lo que RAND() sólo devuelve un valor numérico. 2) RAND() sólo devuelve un valor aleatorio entre 0.0 y 1.0, po rlo que para evaluar el resultado debe multiplicarse por algún valor potencia de 10. Supongamos 100, para tener un rango seguro de números analizables. 3) Considerando que sólo tienes dos opciones (A y D), podemos usar simplemente el que el número sea par o impar, para determinar cuál es el que pondremos. 4) Determinar si un número es par o no es uno de los ejercicios más básicos de programación: Los impares tienen resto de división al ser divididos por 2... Entonces la cosa sería:
Código MySQL:
Ver original Pero aquí hay algo interesante: Todo esto que estás haciendo no tiene ninguna utilidad, porque esto mismo lo podrías hacer directamente en la aplicación, y no derivarle esa responsabilidad a la base de datos, donde no deberías hacerlo. Si lo único que varía es un único valor del INSERT ¿por qué no lo defines en el programa, cuando creas ,dinámicamente la sentencia? ¿Por qué quieres hacerlo en un SP, cuando no se necesita ni produce ninguna utilidad? A mi entender estás complicando innecesariamente todo el asunto...
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
Etiquetas: |