Funzione di conversione esplicita del tipo di dati

La conversione esplicita dei tipi di dati viene specificata in termini di definizioni dei tipi di dati SQL.

La sintassi ODBC per la funzione di conversione esplicita del tipo di dati non limita le conversioni. La validità di conversioni specifiche di un tipo di dati in un altro tipo di dati verrà determinata da ogni implementazione specifica del driver. Il driver, poiché converte la sintassi ODBC nella sintassi nativa, rifiuta le conversioni che, sebbene legali nella sintassi ODBC, non sono supportate dall'origine dati. La funzione ODBC SQLGetInfo, con le opzioni di conversione , ad esempio SQL_CONVERT_BIGINT, SQL_CONVERT_BINARY, SQL_CONVERT_INTERVAL_YEAR_MONTH e così via, consente di verificare le conversioni supportate dall'origine dati.

Il formato della funzione CONVERT è:

CONVERT( value_exp, data_type)

La funzione restituisce il valore specificato da value_exp convertito nel data_type specificato, dove data_type è una delle parole chiave seguenti:

SQL_BIGINT
SQL_BINARY
SQL_BIT
SQL_CHAR
SQL_DATE
SQL_DECIMAL
SQL_DOUBLE
SQL_FLOAT
SQL_GUID
SQL_INTEGER
SQL_INTERVAL_DAY
SQL_INTERVAL_DAY_TO_HOUR

SQL_INTERVAL_DAY_TO_MINUTE
SQL_INTERVAL_DAY_TO_SECOND
SQL_INTERVAL_HOUR
SQL_INTERVAL_HOUR_TO_MINUTE
SQL_INTERVAL_HOUR_TO_SECOND
SQL_INTERVAL_MINUTE
SQL_INTERVAL_MINUTE_TO_SECOND
SQL_INTERVAL_MONTH
SQL_INTERVAL_SECOND
SQL_INTERVAL_YEAR
SQL_INTERVAL_YEAR_TO_MONTH
SQL_LONGVARBINARY

SQL_LONGVARCHAR
SQL_NUMERIC
SQL_REAL
SQL_SMALLINT
SQL_TIME
SQL_TIMESTAMP
SQL_TINYINT
SQL_VARBINARY
SQL_VARCHAR
SQL_WCHAR
SQL_WLONGVARCHAR
SQL_WVARCHAR

La sintassi ODBC per la funzione di conversione esplicita del tipo di dati non supporta la specifica del formato di conversione. Se la specifica di formati espliciti è supportata dall'origine dati sottostante, un driver deve specificare un valore predefinito o implementare la specifica del formato.

L'argomento value_exp può essere un nome di colonna, il risultato di un'altra funzione scalare o un valore letterale numerico o stringa. Ad esempio:

{ fn CONVERT( { fn CURDATE() }, SQL_CHAR ) }  

converte l'output della funzione scalare CURDATE in una stringa di caratteri.

Poiché ODBC non impone un tipo di dati per i valori restituiti dalle funzioni scalari (poiché le funzioni sono spesso specifiche dell'origine dati), le applicazioni devono usare la funzione scalare CONVERT quando possibile per forzare la conversione dei tipi di dati.

I due esempi seguenti illustrano l'uso della funzione CONVERT . Questi esempi presuppongono l'esistenza di una tabella denominata EMPLOYEES, con una colonna EMPNO di tipo SQL_SMALLINT e una colonna EMPNAME di tipo SQL_CHAR.

Se un'applicazione specifica l'istruzione SQL seguente:

SELECT EMPNO FROM EMPLOYEES WHERE {fn CONVERT(EMPNO,SQL_CHAR)} LIKE '1%'  
  • Un driver per ORACLE converte l'istruzione SQL in:

    SELECT EMPNO FROM EMPLOYEES WHERE to_char(EMPNO) LIKE '1%'  
    
  • Un driver per SQL Server converte l'istruzione SQL in:

    SELECT EMPNO FROM EMPLOYEES WHERE convert(char,EMPNO) LIKE '1%'  
    

Se un'applicazione specifica l'istruzione SQL seguente:

SELECT {fn ABS(EMPNO)}, {fn CONVERT(EMPNAME,SQL_SMALLINT)}  
   FROM EMPLOYEES WHERE EMPNO <> 0  
  • Un driver per ORACLE converte l'istruzione SQL in:

    SELECT abs(EMPNO), to_number(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0  
    
  • Un driver per SQL Server converte l'istruzione SQL in:

    SELECT abs(EMPNO), convert(smallint, EMPNAME) FROM EMPLOYEES  
       WHERE EMPNO <> 0  
    
  • Un driver per Ingres converte l'istruzione SQL in:

    SELECT abs(EMPNO), int2(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0