Freigeben über


Explizite Datentyp-Konvertierungsfunktion

Die explizite Datentypkonvertierung wird in Bezug auf SQL-Datentypdefinitionen angegeben.

Die ODBC-Syntax für die explizite Datentypkonvertierungsfunktion schränkt keine Konvertierungen ein. Die Gültigkeit bestimmter Konvertierungen eines Datentyps in einen anderen Datentyp wird durch jede treiberspezifische Implementierung bestimmt. Der Treiber weist beim Übersetzen der ODBC-Syntax in die systemeigene Syntax diese Konvertierungen zurück, die zwar in der ODBC-Syntax zulässig sind, aber von der Datenquelle nicht unterstützt werden. Die ODBC-Funktion SQLGetInfo mit den Konvertierungsoptionen (z. B. SQL_CONVERT_BIGINT, SQL_CONVERT_BINARY, SQL_CONVERT_INTERVAL_YEAR_MONTH usw.) bietet eine Möglichkeit zum Abfragen von Konvertierungen, die von der Datenquelle unterstützt werden.

Das Format der CONVERT-Funktion lautet:

CONVERT( value_exp, data_type)

Die Funktion gibt den durch value_exp in den angegebenen data_type konvertierten Wert zurück, wobei data_type eines der folgenden Schlüsselwörter ist:

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

Die ODBC-Syntax für die explizite Datentypkonvertierungsfunktion unterstützt keine Spezifikation des Konvertierungsformats. Wenn die Spezifikation expliziter Formate von der zugrunde liegenden Datenquelle unterstützt wird, muss ein Treiber einen Standardwert angeben oder formatspezifikation implementieren.

Das Argument value_exp kann ein Spaltenname, das Ergebnis einer anderen skalaren Funktion oder ein numerisches oder Zeichenfolgenliteral sein. Zum Beispiel:

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

konvertiert die Ausgabe der CURDATE-Skalarfunktion in eine Zeichenfolge.

Da ODBC keinen Datentyp für Rückgabewerte von skalaren Funktionen angibt (da die Funktionen häufig datenquellenspezifisch sind), sollten Anwendungen die CONVERT-Skalarfunktion verwenden, um die Datentypkonvertierung zu erzwingen.

Die folgenden beiden Beispiele veranschaulichen die Verwendung der CONVERT-Funktion . In diesen Beispielen wird davon ausgegangen, dass eine Tabelle mit dem Namen "EMPLOYEES" mit einer EMPNO-Spalte vom Typ SQL_SMALLINT und einer EMPNAME-Spalte vom Typ SQL_CHAR vorhanden ist.

Wenn eine Anwendung die folgende SQL-Anweisung angibt:

SELECT EMPNO FROM EMPLOYEES WHERE {fn CONVERT(EMPNO,SQL_CHAR)} LIKE '1%'  
  • Ein Treiber für ORACLE übersetzt die SQL-Anweisung in:

    SELECT EMPNO FROM EMPLOYEES WHERE to_char(EMPNO) LIKE '1%'  
    
  • Ein Treiber für SQL Server übersetzt die SQL-Anweisung in:

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

Wenn eine Anwendung die folgende SQL-Anweisung angibt:

SELECT {fn ABS(EMPNO)}, {fn CONVERT(EMPNAME,SQL_SMALLINT)}  
   FROM EMPLOYEES WHERE EMPNO <> 0  
  • Ein Treiber für ORACLE übersetzt die SQL-Anweisung in:

    SELECT abs(EMPNO), to_number(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0  
    
  • Ein Treiber für SQL Server übersetzt die SQL-Anweisung in:

    SELECT abs(EMPNO), convert(smallint, EMPNAME) FROM EMPLOYEES  
       WHERE EMPNO <> 0  
    
  • Ein Treiber für Ingres übersetzt die SQL-Anweisung in:

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