Necesito convertir en el procedimiento de string
a decimal
con separador decimal fijo .
independiente de las configuraciones de cultivo. Luego, sé que el número decimal está limitado solo con 6 lugares decimales después de .
y no hay límite en el número de dígitos antes del .
. El uso de documentación de Oracle y sus ejemplos de cadenas de formato que tengo ahora solo esta solución:Cómo convertir de una cadena a un número en Oracle utilizando la función TO_NUMBER con un punto decimal fijo char?
v_number := TO_NUMBER(v_string, '9999999999999999999999999999999999D999999', 'NLS_NUMERIC_CHARACTERS = ''. ''');
Número de caracteres antes de 9
D
es el número máximo permitido. Encuentro esta cadena de formato como bastante horrible. ¿Hay alguna cadena de formato mejor para esta conversión general o alguna forma de omitir el segundo parámetro de función? En general, solo necesito pasar al parámetro NLS de la función para decirle que solo quiero convertir con el separador decimal .
, pero el segundo parámetro también es obligatorio en ese caso.
Si el número en el formulario de cadena es siempre como '9999.99999' ¿por qué no simplemente usa TO_NUMBER()? ¿Quieres poner la restricción de tener 6 dígitos después del decimal? – Chandu
@cybernate: 'to_number (: X)' analizará X en la configuración NLS de la sesión, que podría tener un separador numérico diferente de "." –
@Vincent: Thx para la aclaración ... – Chandu