Me gustaría formatear un número como "1º", "2º", "4º", "9º", etc. ¿Hay alguna función de Oracle que haga esto por mí?En Oracle, ¿cómo convierto un número como 1 en una cadena como "1st"?
Respuesta
Tal vez estoy simplificando demasiado, pero parece que el siguiente debería funcionar bien (para los números enteros) y es mucho más legible que la conversión a una fecha y vuelta:
select case
when initial_extent is null then null
when substr(initial_extent,-2,1) = '1'
then initial_extent || 'th'
else case substr(initial_extent,-1,1)
when '1' then initial_extent || 'st'
when '2' then initial_extent || 'nd'
when '3' then initial_extent || 'rd'
else initial_extent || 'th'
end
end as formatted_number
from user_tables
Suponiendo que el valor proporcionado es numérico, en lugar de fecha, puede utilizar TO_CHAR pero hay que convertir el valor numérico a una cadena, entonces una fecha (Julian) antes de finalmente formatearlo:
SELECT TO_CHAR(TO_DATE('1', 'dd'), 'ddth')
FROM DUAL
Resultado :
01st
Al realizar pruebas, el uso de 'd' para el formato no arrojó los resultados esperados porque el valor se interpreta como una fecha juliana. De cualquier subcadena la salida para eliminar el cero, o proporcionar una cadena de fecha completa (no importa a la TO_CHAR, ya que sólo está interesado en el día del mes):
SELECT TO_CHAR(TO_DATE('1900-01-01', 'YYYY-MM-dd'), 'dth')
FROM DUAL
Debido extremo días naturales a 31, utilizar el valor de año en vez de manejar números mayores que 31:
SELECT TO_CHAR(TO_DATE('32-01-01', 'YYYY-MM-dd'), 'yyth')
FROM DUAL
Resultado:
32nd
puedo estar equivocado, pero ¿esto no devolvería '1º' en lugar de' 1º'? –
Sí, estaba equivocado; los [documentos de Oracle] (http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/sql_elements004.htm#autoId10) indican que 'TH' es un sufijo de elemento de formato válido. –
@Vineet Reynolds: S'all bien. 'TH' solo está disponible para las fechas en las que estaba probando 10g. –
select substr(to_char(to_date(abs(decode(mod(l_value, 10), 0, 4, mod(l_value , 10) )), 'YYYY'), 'YTH'), 2) as value
from dual
Reemplace l_value con el valor apropiado, hmmm. Debería cubrir cualquier número.
- 1. Seleccionar cadena como número en Oracle
- 2. ¿Cómo convierto una cadena como "Rojo" en una System.Windows.Media.Color?
- 3. ¿Cómo convierto una cadena binaria en un número en Perl?
- 4. convertir un número entero en una cadena como 3
- 5. Coffeescript: ¿cómo convierto una cadena en un número?
- 6. en python ¿cómo convierto un número de un solo dígito en una cadena de dos dígitos?
- 7. Oracle - Ordenando un campo VARCHAR2 como un NÚMERO - Encontré una solución, necesito una explicación en él
- 8. ¿Cómo revertir un número como un entero y no como una cadena?
- 9. Haskell: cómo evaluar una cadena como "1 + 2"
- 10. cómo ordenar cadena como número en DataGridView en winforms
- 11. OCaml - ¿Cómo convierto int en una cadena?
- 12. ¿Cómo convierto un doble en una cadena en C++?
- 13. cómo encontrar n ° dígito en un número como 1491625 ....?
- 14. ¿Cómo convierto un objeto Rails DateTime en una cadena XML?
- 15. ¿Cómo convierto una cadena en un número entero en el objetivo C?
- 16. Oracle SQL usando Como por un comodín
- 17. ¿Cómo convierto una cadena en un método de clase?
- 18. Cómo convierto un nombre de función en una cadena
- 19. ¿Por qué Oracle 9i trata una cadena vacía como NULL?
- 20. ¿Cómo convierto un entero en una cadena en Excel VBA?
- 21. ¿Cómo convierto una cadena en un char * en C++?
- 22. ¿Cómo convierto un largo en una cadena en C++?
- 23. En Erlang, ¿cómo convierto una Cadena en un valor binario?
- 24. ¿Cómo convierto una cadena en un buffer en Python 3.1?
- 25. ¿Cómo convierto un UIColor en una cadena hexadecimal?
- 26. ¿Cómo convierto una cadena hexadecimal en un entero con signo?
- 27. ¿Cómo convierto un objeto org.w3c.dom.Document en una Cadena?
- 28. ¿Cómo convierto una cadena de caracteres en una cadena wchar_t?
- 29. Extrayendo un número de una cadena de 1 palabra
- 30. Convertir una matriz de bytes en un número decimal como una cadena
El enfoque basado en la fecha es genial, pero esto es con lo que terminé. Funciona independientemente de qué número le arrojes. El enfoque de fecha podría ser mejor si necesita resultados diferentes por idioma. – JoshL