Teilen über


Explizite Datentyp-Konvertierungsfunktion

Die explizite Datentypkonvertierung wird in Sql-Datentypdefinitionen angegeben.

Die ODBC-Syntax für die explizite Datentypkonvertierungsfunktion schränkt Konvertierungen nicht ein. Die Gültigkeit bestimmter Konvertierungen eines Datentyps in einen anderen Datentyp wird von jeder treiberspezifischen Implementierung bestimmt. Da er die ODBC-Syntax in die native Syntax übersetzt, lehnt der Treiber die Konvertierungen ab, 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 ist:

CONVERT(value_exp, data_type)

Die Funktion gibt den Wert zurück , der durch value_exp in die angegebene data_type konvertiert wurde, 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 eine Formatspezifikation implementieren.

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

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

konvertiert die Ausgabe der Skalarfunktion CURDATE in eine Zeichenfolge.

Da ODBC keinen Datentyp für Rückgabewerte aus Skalarfunktionen vorgibt (da die Funktionen häufig datenquellenspezifisch sind), sollten Anwendungen nach Möglichkeit 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 namens 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 Folgendes:

    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 Folgendes:

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

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