Mi piacerebbe formattare un numero come "1st", "2nd", "4th", "9th", ecc. Esiste una funzione Oracle che farà questo per me?In Oracle, come posso convertire un numero come 1 in una stringa come "1st"?
risposta
Forse sto banalizzando, ma sembra che il seguente dovrebbe funzionare bene (per i numeri interi) ed è molto più leggibile di conversione in una data e ritorno:
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
Assumendo il valore fornito è numerico, piuttosto che data, è possibile utilizzare TO_CHAR ma è necessario convertire il valore numerico in una stringa, quindi una data (Julian) prima di formattarla in definitiva:
SELECT TO_CHAR(TO_DATE('1', 'dd'), 'ddth')
FROM DUAL
Risultato :
01st
Durante il test, utilizzando 'd' per il formato non ha prodotto i risultati attesi perché il valore viene interpretato come una data di Julian. O substring l'uscita per rimuovere lo zero, o fornire una stringa data completa (non importa il TO_CHAR perché è interessati solo il giorno del mese):
SELECT TO_CHAR(TO_DATE('1900-01-01', 'YYYY-MM-dd'), 'dth')
FROM DUAL
Perché giorni di calendario terminano alle 31, utilizzare il valore anno invece di gestire i numeri maggiori di 31:
SELECT TO_CHAR(TO_DATE('32-01-01', 'YYYY-MM-dd'), 'yyth')
FROM DUAL
Risultato:
32nd
potrei sbagliarmi, ma questo non restituirebbe '1 °' invece di '1st'? –
Sì, ho sbagliato; [Oracle docs] (http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/sql_elements004.htm#autoId10) afferma che 'TH' è un suffisso di un elemento di formato valido. –
@Vineet Reynolds: Tutto bene. 'TH' è disponibile solo per le date quando stavo testando su 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
Sostituisci l_value con il valore appropriato, hmmm. Dovrebbe coprire qualsiasi numero.
- 1. Coffeescript: come posso convertire una stringa in un numero?
- 2. Come convertire una stringa in numero in un modello freemarker
- 3. Come posso convertire una stringa in un int in Python?
- 4. Come posso convertire una stringa in jsx?
- 5. Come convertire un numero MAC in una stringa MAC?
- 6. Bash: come convertire un numero in una stringa mensile?
- 7. Come posso convertire un numero assolutamente voluminoso in una stringa in un ragionevole lasso di tempo?
- 8. Come convertire una stringa in numero intero in VHDL?
- 9. ORACLE convertire il numero a stringa
- 10. come convertire una stringa in un bool
- 11. Come posso convertire un python casuale in una stringa?
- 12. Come convertire un int in una stringa?
- 13. Come convertire un HTMLElement in una stringa
- 14. OCaml - Come posso convertire int in stringa?
- 15. Come posso convertire una stringa come "Red" in System.Windows.Media.Color?
- 16. Come convertire una stringa numerica in numero (decimale) e numero in stringa
- 17. Come posso convertire una stringa in un valore TColor?
- 18. Come posso convertire una stringa in un chiave segreta
- 19. Come posso convertire un percorso Unicode in una stringa c?
- 20. Come posso convertire un singolo carattere in una stringa?
- 21. Come posso convertire una stringa in un BigInteger?
- 22. In Kotlin Come posso convertire un Int? a un numero
- 23. Come convertire una rappresentazione di stringa di un numero in un numero in coldfusion?
- 24. Come convertire una stringa in un decimale?
- 25. Come convertire una stringa Lua in float
- 26. Come posso convertire una stringa esadecimale ASCII in un numero intero con segno
- 27. Come posso convertire un numero in testo in Perl?
- 28. Come posso convertire una stringa in float in mysql?
- 29. Come convertire stringa in numero (float) in Perl
- 30. Come posso convertire un numero decimale in esadecimale in VIM?
L'approccio basato sulla data è interessante, ma questo è ciò che ho concluso. Funziona a prescindere da quale numero ci passi. L'approccio alla data potrebbe essere migliore se hai bisogno di risultati diversi per lingua. – JoshL