Makro-Funktionen für die Konvertierung (FireDAC)
Nach oben zu Vorverarbeiten von Anweisungstext (FireDAC)
In der folgenden Tabelle wird die Makro-Funktion "CONVERT" erläutert:
Funktion
|
Beschreibung
|
Lokale Ausdrucks-Engine
|
---|---|---|
CONVERT(Wertausdr, Datentyp) | Die Funktion gibt den in Wertausdr angegebenen Wert, konvertiert in den angegebenen Datentyp zurück, wobei Datentyp eines der folgenden Schlüsselwörter ist. | + |
Die unterstützten Schlüsselwörter:
BIGINT | REAL |
BINARY | SMALLINT |
BIT | DATE |
CHAR | TIME |
DECIMAL | TIMESTAMP |
TIMESTAMP | TIMESTAMP |
FLOAT | VARBINARY |
GUID | VARCHAR |
INTEGER | WCHAR |
LONGVARBINARY | WLONGVARCHAR |
LONGVARCHAR | WVARCHAR |
NUMERIC |
Die Syntax für die Funktion zur expliziten Datentypkonvertierung unterstützt die Spezifikation des Konvertierungsformats nicht. Das Argument Wertausdr kann ein Spaltenname, das Ergebnis einer anderen skalaren Funktion oder ein numerisches oder String-Literal sein. Zum Beispiel konvertiert:
{ fn CONVERT( { fn CURDATE() }, CHAR ) }
die Ausgabe der skalaren CURDATE-Funktion in einen Zeichen-String. Weil FireDAC keinen Datentyp für Rückgabewerte von skalaren Funktionen vorschreibt (weil die Funktionen häufig datenquellenspezifisch sind), sollten Anwendungen mit der skalaren Funktion CONVERT, wann immer möglich, eine Datentypkonvertierung durchsetzen. Die folgenden beiden Beispiele zeigen die Verwendung der Funktion CONVERT. In diesen Beispielen wird davon ausgegangen, dass eine Tabelle namens EMPLOYEES mit einer Spalte EMPNO vom Typ SQL_SMALLINT und eine Spalte EMPNAME vom SQL_CHAR vorhanden ist. Wenn in einer Anwendung die folgende SQL-Anweisung angegeben ist:
SELECT EMPNO FROM EMPLOYEES WHERE {fn CONVERT(EMPNO,CHAR)} LIKE '1%'
- Übersetzt ein ORACLE-Treiber die SQL-Anweisung in:
SELECT EMPNO FROM EMPLOYEES WHERE to_char(EMPNO) LIKE '1%'
- Übersetzt ein SQL Server-Treiber die SQL-Anweisung in:
SELECT EMPNO FROM EMPLOYEES WHERE convert(char,EMPNO) LIKE '1%'
Wenn in einer Anwendung die folgende SQL-Anweisung angegeben ist:
SELECT {fn ABS(EMPNO)}, {fn CONVERT(EMPNAME,SMALLINT)} FROM EMPLOYEES WHERE EMPNO <> 0
Übersetzt ein ORACLE-Treiber die SQL-Anweisung in:
SELECT abs(EMPNO), to_number(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0
Übersetzt ein SQL Server-Treiber die SQL-Anweisung in:
SELECT abs(EMPNO), convert(smallint, EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0