Convertir a varchar

Necesito convertir un numero a un varchar ( en pl-sql) de manera que aunque ese numero venga con separador decimal de coma o punto, el varchar siempre refleje una coma...

1 Respuesta

Respuesta
1
Quizás no he entendido bien la pregunta, si efectivamente no la he entendido bien, pido disculpas por mi respuesta.
Ahí va:
En una B.D. Oracle, siempre te devolverá un único carácter como signo decimal, o bien un punto o una coma, en función de sus configuración y del idioma en el que este definido por defecto.
Si quieres hacer un programa que manipule dicho aspecto para que no le importe el punto o la coma, ahí va un ejemplo:
Declare
minumero number(8,2);
Begin
Begin
select sueldoeuros into minumero from mitabla where nif='66777890h';
exception
when no_data_found then begin
minumero:=0;
end;
when others then begin
end;
end;
minumero := substr(to_char(minumero,'999999,99'),1,6)||','||substr(to_char(minumero,'999999,99'),8,2)
end;
.
/
Con esto minumero siempre contendra un char con el numero con el signo decimal la coma.
Espero que me cuentes cual es el problema real que se te plantea para darte la solución más optima.
La verdad es que no me he explòicado muy bien. De todos modos el problema tampoco ha resultado ser tan difícil al final.
El caso es que aquí se trabaja con datos que provienen de diferentes ambientes y bases de datos por lo que puedo encontrarme en la situación que un numero venga con coma y otro con punto. Lo que quería buscar era la manera de transformar ese punto (mediante una función que buscase un separador o algo así) en una coma.. al final he optado por replace pero todavía no lo he probado por lo que no estoy segura de si esta bien...
Muchas gracias por contestarme. Te tengo en mi lista para problemas más complejos (que los tendré.. je, je). un saludo
El replace no me sirve porque necesito conservar los puntos de los millares (aaaagggggg, como odio el euro!).
Haber si ahora me explico mejor:
Necesito hacer un to_char de un numero que puede tener como separador decimal tanto un punto como una coma de manera que siempre utilice coma pero pudiendo utilizar el punto como separador de miles..
Ejemplo...
1.235.236 ------ 1.235,236
Espero que sepas algo...
Muchas gracias
Creo que cada vez me lo pones más difícil.
Un numero es un numero, los signos decimales en PL-SQL no forman parte del numero, esto es:
Si capturo un valor en una variable de tipo number(8,2), el valor de esa variable es un numero entero de 6 posiciones más dos posiciones decimales. Los signos de miles no están guardados en ningún sitio, de tal forma que si hago un:
TO_CHAR(MINUMERO, '999999,99') ME DEVOLVERA EL VALOR DE MI NUMERO SIN NINGUNA PUNTUACION EXCEPTO la de los decimales, por lo que el replace te sive perfectamente.
Todo esto es simple, pero me intuyo que a lo que tu llamas numero no lo sera como tal, quizás si como contenido, pero no la variable en la que capturas el valor, ¿me equivoco?
Y claro, según me dice, si me viene el numero: 1,125 que cantidad es: 1 coma 125 o mil ciento veinticinco. Claro como no sabemos la coma que es lo que representa.
Espero que entiendas que la situación que me planteas no esta claramente definida. Tendríamos que tener cosas más claras como:
¿Todos los números que te pueden venir tendrán decimales y por lo tanto el signo de puntuación decimal?
¿Los qué tengan decimales puden tener un numero indefinido de decimales o por el contrario existe un numero máximo de decimales?
En cualquier caso, si obtenemos dichos números de distintas B.D. quizás seria conveniente tratarlas individualmente.
Espero haberte dado ideas y muchas gracias por incluirme como experto.
Al final no se como la vamos a hacer pero te explico claramente (espero que ahora si) el problema, más que nada para que no te quedes con la curiosidad...
Debo hacer un insert de un dato que previamente esta definido como number (sin especificar decimales o enteros, ni el tipo de separador). Este dato lo recojo en unas ocasiones de una tabla y en otras de otra. La tabla puede venir de siebel, de arbor... en fin, y ademas de diferentes bases de datos (algo así, pero mi lenguaje informático es bastante simple). El caso es que en unas ocasiones estos números pueden venir con separador decimal de coma, con separador decimal de punto, con separador de miles de punto.. etc... pero yo quiero que sea introducido siempre con separador decimal de coma y un punto como separador de miles...
La solución de formatear el numero desde el to_char es buena pero primero debemos indagar cuantos enteros y decimales puede tener el numero en cuestión porque hasta ahora esto no estaba definido. Supongo que finalmente optaremos por esto (eso espero)...
Te agradezco mucho tu ayuda... probablemente me surjan muchas más dudas en el futuro así que ya te acordaras de mi... je, je.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas