Oracle - alternativa oracle a select if de mysql

 
Vista:

alternativa oracle a select if de mysql

Publicado por Pedro (2 intervenciones) el 03/01/2011 13:15:53
Hola,
Estoy haciendo pruebas con bases de datos, y he visto que MYSQL permite IF dentro de selects.

El caso es que necesitaría devolver 1 ó 0 dependiendo de si hay registros que cumplan con los requisitos indicados en la cláusula where. En MySQL se puede hacer de la forma siguiente:

SELECT if(count(*)=0,'0','1') from Prueba where id=1

Esta select devuelve 0 si el count de registros con id=1 es 0, ó devuelve 1 si el count no es igual a 0

¿Hay alguna forma en Oracle de hacer lo mismo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 6
Ha aumentado su posición en 7 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

RE:alternativa oracle a select if de mysql

Publicado por Leonardo Josué (46 intervenciones) el 03/01/2011 18:02:05
Buenos días Pedro:

Se me ocurren dos opciones para hacer lo que quieres, una utilizando CASE-WHEN y otra utilizando DECODE, sería cuestión de que las evalues y veas si hacen lo que necesitas. Sería más o menos así

SELECT CASE WHEN (SELECT COUNT(*) FROM Prueba) = 0 THEN 0 ELSE 1 END
FROM DUAL

o

SELECT DECODE(COUNT(*), 0, 0, COUNT(*), 1) FROM Prueba

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:alternativa oracle a select if de mysql

Publicado por Ivan (1 intervención) el 10/01/2011 14:42:13
Se llama DECODE

http://ora.u440.com/conversion/decode.html

Función DECODE

Traduce una expresión a un valor de retorno. Si expr es igual a value1, la función devuelve Return1. Si expr es igual a value2, la función devuelve Return2. Y asi sucesivamente. Si expr no es igual a ningun valor la funcion devuelve el valor por defecto.

DECODE(expr, value1 [, return1, value2, return2....,] default )

Si ejecutamos:

SELECT DECODE(ESTADO,0,'bien',1,'regular','mal') FROM T_PEDIDOS;

Devuelve:

bien
bien
regular
mal
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar