Duda tonta con función

10/07/2008 - 11:49 por Cactus | Informe spam
Hola a todos, me estoy rompiendo la cabeza con ésto y nunca me había dado
cuenta del problema hasta ayer.

Defino una función en sql 2000 que devolverá un float. En la función
simplemente divido 10 entre 20, lo cual me debería devolver 0,5, pero no hay
forma... obtengo 0, y he probado de todo y no consigo nada.

El texto de la función:
ALTER FUNCTION dbo.[1]

( )

Returns float

As

Begin

Declare @Resultado float

select @resultado = 10/20


Return @Resultado

END

Si en vez de poner 10/20 pongo 10.00/20.00 me funciona bien, pero esta
solución no me sirve ya que en la función real los datos salen de campos, y
son muchas más operaciones que eso.

Gracias.

Preguntas similare

Leer las respuestas

#1 DarthSidious
10/07/2008 - 13:48 | Informe spam
en los libros online de sql dice que si divides 2 enteros con /, el resultado
sera un entero. Lo unico que se me ocurre es que en la division hagas un
convert a float de los valores que vayas a dividir, algo asi:

select @resultado = convert(float,10)/convert(float,20)

si la linea la pones asi, te va a dar el resultado con los decimales porque
antes de dividir los hace float. Quiza hay una solucion mas facil pero es la
unica que se me ocurre. Si encontras una mejor posteala asi me entero!

salu2!!

"Cactus" wrote:

Hola a todos, me estoy rompiendo la cabeza con ésto y nunca me había dado
cuenta del problema hasta ayer.

Defino una función en sql 2000 que devolverá un float. En la función
simplemente divido 10 entre 20, lo cual me debería devolver 0,5, pero no hay
forma... obtengo 0, y he probado de todo y no consigo nada.

El texto de la función:
ALTER FUNCTION dbo.[1]

( )

Returns float

As

Begin

Declare @Resultado float

select @resultado = 10/20


Return @Resultado

END

Si en vez de poner 10/20 pongo 10.00/20.00 me funciona bien, pero esta
solución no me sirve ya que en la función real los datos salen de campos, y
son muchas más operaciones que eso.

Gracias.





Respuesta Responder a este mensaje
#2 Cactus
10/07/2008 - 14:15 | Informe spam
Muchas gracias por tu sugerencia, la usaré en mis funciones sin más
complicación.

Un saludo.

"DarthSidious" escribió en el
mensaje news:
en los libros online de sql dice que si divides 2 enteros con /, el


resultado
sera un entero. Lo unico que se me ocurre es que en la division hagas un
convert a float de los valores que vayas a dividir, algo asi:

select @resultado = convert(float,10)/convert(float,20)

si la linea la pones asi, te va a dar el resultado con los decimales


porque
antes de dividir los hace float. Quiza hay una solucion mas facil pero es


la
unica que se me ocurre. Si encontras una mejor posteala asi me entero!

salu2!!

"Cactus" wrote:

> Hola a todos, me estoy rompiendo la cabeza con ésto y nunca me había


dado
> cuenta del problema hasta ayer.
>
> Defino una función en sql 2000 que devolverá un float. En la función
> simplemente divido 10 entre 20, lo cual me debería devolver 0,5, pero no


hay
> forma... obtengo 0, y he probado de todo y no consigo nada.
>
> El texto de la función:
> ALTER FUNCTION dbo.[1]
>
> ( )
>
> Returns float
>
> As
>
> Begin
>
> Declare @Resultado float
>
> select @resultado = 10/20
>
>
> Return @Resultado
>
> END
>
> Si en vez de poner 10/20 pongo 10.00/20.00 me funciona bien, pero esta
> solución no me sirve ya que en la función real los datos salen de


campos, y
> son muchas más operaciones que eso.
>
> Gracias.
>
>
>
>
>
Respuesta Responder a este mensaje
#3 Gustavo Larriera (MVP)
10/07/2008 - 20:27 | Informe spam
Haga la operación usando constantes de ttpo Float:

select @resultado = 10.0/20.0

O bien use CONVERT/CAST para convertir la expresión a Float.


Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Cactus" wrote:

Hola a todos, me estoy rompiendo la cabeza con ésto y nunca me había dado
cuenta del problema hasta ayer.

Defino una función en sql 2000 que devolverá un float. En la función
simplemente divido 10 entre 20, lo cual me debería devolver 0,5, pero no hay
forma... obtengo 0, y he probado de todo y no consigo nada.

El texto de la función:
ALTER FUNCTION dbo.[1]

( )

Returns float

As

Begin

Declare @Resultado float

select @resultado = 10/20


Return @Resultado

END

Si en vez de poner 10/20 pongo 10.00/20.00 me funciona bien, pero esta
solución no me sirve ya que en la función real los datos salen de campos, y
son muchas más operaciones que eso.

Gracias.





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida