変換マクロ関数(FireDAC)

提供: Appmethod Topics
移動先: 案内検索


マクロ関数 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