Makro-Funktionen für die Konvertierung (FireDAC)

Aus RAD Studio
Wechseln zu: Navigation, Suche

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