Funzioni di conversione
È possibile utilizzare le funzioni di formattazione di Netezza Performance Server SQL per convertire i tipi di dati (data/ora, interi, virgola mobile, numerici) in stringhe formattate e per convertire le stringhe formattate in tipi di dati specifici.
Le funzioni " to_* utilizzano tutte una convenzione di chiamata comune: il primo argomento è il valore da formattare e il secondo argomento è un modello che definisce il formato di uscita o di ingresso. I modelli utilizzati da questi modelli sono descritti in Modelli di modelli per le conversioni data/ora.
date con un tipo di dati 'timestamp internamente.| Tipo | Descrizione | Esempi |
|---|---|---|
hex_to_binary(VARCHAR) |
Converte una stringa codificata in caratteri esadecimali nel suo equivalente binario. Restituisce un valore VARBINARIO. | |
hex_to_geometry(VARCHAR) |
Converte una stringa codificata in caratteri esadecimali nel suo valore equivalente ST_GEOMETRY. | |
int_to_string(INT8, byteint) |
Converte un valore decimale in una stringa esadecimale, ottale, decimale o binaria. La funzione restituisce un valore VARCHAR. Il primo argomento specifica il valore decimale da convertire e il secondo argomento specifica la base del sistema numerico in cui convertire.
|
|
string_to_int(VARCHAR, byteint) |
Converte una stringa esadecimale, ottale, decimale o binaria in un valore decimale. La funzione restituisce un valore INT8. Il primo argomento specifica la stringa da convertire e il secondo argomento specifica la base del sistema numerico del primo argomento.
|
|
to_char(value,template) |
Converte il valore specificato (che può essere una data, un timestamp, un valore reale, a doppia precisione o numerico) in una stringa di caratteri.
|
Vedere la Tabella 2. |
to_number(text,template) |
Converte una stringa di caratteri in un valore numerico. | select to_number('12,454.8-', '99G999D9S');Restituisce: |
to_date(text,template) |
Converte una stringa di caratteri in una data. Salta gli spazi vuoti multipli a meno che non si specifichi il prefisso FX come primo elemento del modello. | select to_date('31 Dec 2015','DD Mon YYYY');Restituisce: |
select to_date('31 Dec 2015','FXDD Mon
YYYY');Restituisce: |
||
select to_date('31 Dec 2015 20:33:33','DD
Mon YYYY HH24":"MI":"SS');Restituisce: |
||
to_timestamp(text,template) |
Converte una stringa di caratteri in un timestamp. Salta gli spazi vuoti multipli a meno che non si specifichi il prefisso FX come primo elemento del modello. | select to_timestamp('31 Dec 2015 08:38:40 pm', 'DD
Mon YYYY HH:MI:SS am');Restituisce: Si noti che l'indicatore del meridiano (am o pm) del modello non deve necessariamente corrispondere a quello della stringa di input. Tuttavia, deve utilizzare lo stesso formato (con o senza punti). |
Esempi della funzione to_char
Un'istruzione SELECT che contiene una delle espressioni mostrate nella tabella seguente restituisce il risultato indicato.
| Espressione | Risultato | Commenti |
|---|---|---|
to_char(date '2015-02-14', 'YYYY Month') |
'2013 February ' |
A "febbraio" segue uno spazio vuoto perché nove caratteri (il numero di lettere di "settembre") sono riservati al nome di un mese, indipendentemente dal numero di lettere effettivamente necessarie. |
to_char(date '2015-02-14', 'YYYY FMMonth') |
'2013 February' |
Il prefisso " FM rimuove lo spazio vuoto dopo "febbraio". |
to_char(timestamp '2015-02-14 20:19:07',
'HH24:MI:SS') |
'20:19:07' |
|
to_char(timestamp '2015-02-14 20:19:07',
'HH:MI:SS am') |
'08:19:07 pm' |
L'indicatore del meridiano specificato dal modello viene regolato nell'output in modo da corrispondere all'ora (am per le ore da 0 a 12 o pm per le ore da 12 a 23). Per l'output viene utilizzato il formato dell'indicatore di meridiano specificato dal modello (maiuscolo o minuscolo, con o senza punti). |
to_char(timestamp '2015-02-14 20:19:07',
'Day, DD HH:MI:SS am') |
|
Tre spazi vuoti seguono "lunedì" perché nove caratteri (il numero di lettere di "mercoledì") sono riservati al nome di un giorno della settimana, indipendentemente dal numero di lettere effettivamente necessarie. |
to_char(timestamp '2015-02-14 20:19:07',
'FMDay, DD HH:MI:SS am') |
|
Il prefisso " FM rimuove gli spazi vuoti che seguono "Monday". Inoltre, rimuove gli zeri iniziali dalla data, dalle ore e dai secondi. |
to_char(timestamp '2015-02-14 20:19:07',
'Day, DD FMHH:MI:SS am') |
|
Il prefisso " FM elimina gli zeri iniziali dalle ore e dai secondi. |
to_char(125, '999') |
' 125' |
Il risultato è una stringa di 4 caratteri, uno per ogni posizione del modello, più un ulteriore spazio vuoto che precede il numero al posto del segno più (+). |
to_char(-125, '999') |
'-125' |
Il numero non è preceduto da uno spazio vuoto, a causa del segno meno (-). |
to_char(125, '"999D999') |
' 125.000' |
Il modello specifica che l'output deve includere tre cifre decimali. Il risultato è una stringa di 8 caratteri, uno per ogni posizione nel modello (il delimitatore decimale conta come posizione nel modello), più un ulteriore spazio vuoto che precede il numero al posto del segno più (+). |
to_char(-125, '"The number is "999"."') |
'The number is -125.' |
Il testo tra virgolette doppie viene fatto passare. |
to_char(125, '"The number is "FM999"."') |
The number is 125. |
Il prefisso " FM sopprime il vuoto supplementare che normalmente precede il numero positivo. |
to_char(12.7, '99.9') |
' 12.7' |
Il risultato è una stringa di 5 caratteri, uno per ogni posizione del modello, più un ulteriore spazio vuoto che precede il numero al posto del segno più (+). |
to_char(12.7, 'FM99.9') |
'12.7' |
Il prefisso " FM sopprime il vuoto supplementare che normalmente precede il numero positivo. |
to_char(0.1, '999.99') |
|
Il risultato è una stringa di 7 caratteri, uno per ogni posizione del modello. (Il punto decimale conta come posto nel modello) |
to_char(-0.1, '999.99') |
|
Il risultato è una stringa di 7 caratteri, uno per ogni posizione del modello. (Il punto decimale conta come posto nel modello) |
to_char(-0.1, 'FM999.99') |
'-.1' |
Il prefisso " FM sopprime gli spazi vuoti iniziali e lo zero finale. |
to_char(.1, '0.9') |
' 0.1' |
Lo 0 nel modello specifica che devono essere aggiunti tanti zeri iniziali quante sono le posizioni inutilizzate nel modello. Lo 0 conta come una posizione nel modello. |
to_char(-12.7, '0999.9') |
'-0012.7' |
Lo 0 nel modello specifica che devono essere aggiunti tanti zeri iniziali quante sono le posizioni inutilizzate nel modello. Lo 0 conta come una posizione nel modello. |
to_char(12.7, '90999.9') |
|
Il risultato è una stringa di 8 caratteri, uno per ogni posizione del modello, più un ulteriore spazio vuoto che precede il numero al posto del segno più (+). |
to_char(-12.7, '9999999') |
|
Il risultato è una stringa di 8 caratteri, uno per ogni posizione del modello, più un carattere aggiuntivo per il segno meno (-). |
to_char(485, '9 9 9') |
' 4 8 5' |
|
to_char(1485, '9,999') |
' 1,485' |
|
to_char(1485, '9G999') |
' 1,485' |
Lo schema 'G rappresenta il delimitatore di gruppo specificato per il vostro locale. |
to_char(148.5, '999.999') |
' 148.500' |
|
to_char(148.5, 'FM999.999') |
'148.5' |
|
to_char(148.5, 'FM999.990') |
'148.500' |
|
to_char(148.5, '999D999') |
' 148.500' |
Il delimitatore decimale utilizzato dipende dal locale in cui ci si trova. |
to_char(3148.5, '9G999D999') |
' 3,148.500' |
Lo schema 'G rappresenta il delimitatore di gruppo specificato per il vostro locale. |
to_char(125,'S999') |
'+125' |
Il numero non è preceduto da uno spazio vuoto, perché lo schema 'S specifica che il segno deve essere sempre incluso nell'output. |
to_char(125, '999S') |
'125+' |
Il numero non è preceduto da uno spazio vuoto, perché lo schema 'S specifica che il segno deve essere sempre incluso nell'output. |
to_char(-485, '999S') |
'485-' |
|
to_char(-485, 'MI999') |
'-485' |
Per un numero negativo, il modello " MI inserisce il segno meno (-) nella posizione corrispondente. |
to_char(-485, '999MI') |
'485-' |
|
to_char(485, 'MI999') |
' 485' |
Per un numero positivo, lo schema " MI inserisce uno spazio vuoto nella posizione corrispondente. Il modello " MI non influisce sullo spazio vuoto iniziale che precede un numero positivo. |
to_char(485, '999MI') |
' 485 ' |
|
to_char(485, 'FM999MI') |
'485 ' |
Il prefisso " FM sopprime lo spazio vuoto supplementare che normalmente precede il numero positivo, ma non influisce sullo spazio vuoto aggiunto dal suffisso " MI. |
to_char(485, 'PL999') |
'+485' |
Per un numero positivo, il modello " PL inserisce il segno più (+) nella posizione corrispondente. |
to_char(485, '999PL') |
'485+' |
|
to_char(-485, '999PL') |
'-485 ' |
Per un numero negativo, il modello " PL inserisce uno spazio vuoto nella posizione corrispondente. Il suffisso " PL non influisce sul segno meno (-) che precede un numero negativo. |
to_char(-485, 'PL999') |
' -485 ' |
|
to_char(-3485, 'SG9999') |
'-3485' |
|
to_char(-3485, 'S9G999') |
'-3,485' |
|
to_char(-3485, '99SG99') |
'34-85' |
|
to_char(-485, '999PR') |
'<485>' |
|
to_char(485, '999PR') |
' 485' |
|
to_char(485, 'FM999PR') |
'485' |
Il prefisso " FM elimina il vuoto supplementare che normalmente precede un numero positivo. |
to_char(485, 'RN') |
'CDLXXXV' |
|
to_char(5.2, 'RN') |
'V' |
I numeri romani ignorano le frazioni decimali. |
to_char(482, '999th') |
' 482nd' |
Il suffisso " th determina il suffisso ordinale appropriato (st, nd, rd o th). |
to_char(485.8, '"Pre: "FM999" Post:" .999') |
'Pre: 485 Post: .800' |
Il prefisso " FM elimina il vuoto supplementare che normalmente precede un numero positivo. |
to_char(485.8, '"Pre: "FM999" Post:" .999') |
'Pre: -485 Post: .800' |
Il prefisso " FM non influisce su un numero negativo. |
to_char(12, '99V999') |
' 12000' |
|
to_char(12.4, '99V999') |
' 12400' |
|
to_char(12.45, '99V9') |
' 125' |