Ver Mensaje Individual
  #6  
Antiguo 21-06-2003
chutipascal chutipascal is offline
Miembro
 
Registrado: may 2003
Ubicación: Mallorca
Posts: 194
Reputación: 22
chutipascal Va por buen camino
Puede ser que haya otras soluciones, pero una forma de hacerlo puede ser esta:

Primero defines la funcion externa DIV
Código:
DECLARE EXTERNAL FUNCTION DIV
INTEGER, INTEGER
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_div' MODULE_NAME 'ib_udf';
Despues en la consulta de por ejemplo esta tabla
Código:
Tabla de ejemplo
CREATE TABLE "MONEDAS" 
(
  "COD_MON"	INTEGER NOT NULL,
  "CVN_MON"	INTEGER
);
CVN_MON tendria algunos nulos que quieres transformar a 0
para eso usas la función DIV (división sin resto) igualando el divisor a 1.

Código:
select cod_mon, DIV(cvn_mon,1) from monedas;
Ohhh funciona!
De ese modo tiene el nullo transformado a 0.......

Recuerda es un apaño y solo funciona con enteros lo ideal seria tener una función externa para eso.
Si quieres que funcione con 2 decimales puedes hacer algo por el estilo. por ejemplo si CVN_MON fuera NUMERIC(8,2) por ejemplo.
usa esto:
(DIV(cast ((cvn_mon * 100) as integer),1))/100

>>Recuerda comentar profusamente esta sentencia por si alguien viene detras de ti para que pueda entender el porque....


Última edición por chutipascal fecha: 21-06-2003 a las 13:59:41.
Responder Con Cita