変換マクロ関数(FireDAC)
マクロ関数 CONVERT を以下の表で説明します。
関数 | 説明 | ローカルの式エンジン |
---|---|---|
CONVERT(value_exp, data_type) | この関数は、value_exp で指定された値を指定のデータ型 data_type に変換して返します。data_type は以下のキーワードのいずれかです。 | + |
サポートされているキーワード:
BIGINT | REAL |
BINARY | SMALLINT |
BIT | DATE |
CHAR | TIME |
DECIMAL | TIMESTAMP |
TIMESTAMP | TIMESTAMP |
FLOAT | VARBINARY |
GUID | VARCHAR |
INTEGER | WCHAR |
LONGVARBINARY | WLONGVARCHAR |
LONGVARCHAR | WVARCHAR |
NUMERIC |
明示的データ型変換関数の構文では、変換形式の指定をサポートしていません。引数 value_exp は、列名、別のスカラ関数の結果、数値リテラル、文字列リテラルのいずれでもかまいません。以下に例を示します。
{ fn CONVERT( { fn CURDATE() }, CHAR ) }
上記では、CURDATE スカラ関数の出力を文字列に変換しています。(スカラ関数がデータ ソース固有であることが多いため)FireDAC では、スカラ関数の戻り値のデータ型は必須ではありません。そのため、アプリケーションではできるだけスカラ関数 CONVERT を使用して、データ型変換を強制的に行わなければなりません。以下の 2 つの例は CONVERT 関数の使い方を示しています。これらの例では、SQL_SMALLINT 型の EMPNO 列と SQL_CHAR 型の EMPNAME 列を含んだ EMPLOYEES というテーブルがあると仮定しています。アプリケーションで次のような SQL 文を指定した場合、
SELECT EMPNO FROM EMPLOYEES WHERE {fn CONVERT(EMPNO,CHAR)} LIKE '1%'
- ORACLE のドライバでは上記の SQL 文を次のように変換します。
SELECT EMPNO FROM EMPLOYEES WHERE to_char(EMPNO) LIKE '1%'
- ORACLE のドライバでは上記の SQL 文を次のように変換します。
SELECT EMPNO FROM EMPLOYEES WHERE convert(char,EMPNO) LIKE '1%'
アプリケーションで次のような SQL 文を指定した場合、
SELECT {fn ABS(EMPNO)}, {fn CONVERT(EMPNAME,SMALLINT)} FROM EMPLOYEES WHERE EMPNO <> 0
ORACLE のドライバでは上記の SQL 文を次のように変換します。
SELECT abs(EMPNO), to_number(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0
SQL Server のドライバでは上記の SQL 文を次のように変換します。
SELECT abs(EMPNO), convert(smallint, EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0