データ型の明示的な変換用関数
明示的なデータ型変換は、SQL データ型定義の観点から指定されます。
明示的なデータ型変換関数の ODBC 構文では、変換は制限されません。 1 つのデータ型から別のデータ型への特定の変換の有効性は、ドライバー固有の実装ごとに決定されます。 ドライバーは、ODBC 構文をネイティブ構文に変換する場合、ODBC 構文では有効ですが、データ ソースではサポートされていない変換を拒否します。 変換オプション (SQL_CONVERT_BIGINT、SQL_CONVERT_BINARY、SQL_CONVERT_INTERVAL_YEAR_MONTHなど) を使用する ODBC 関数 SQLGetInfo は、データ ソースでサポートされている変換について問い合わせる方法を提供します。
CONVERT 関数の形式は次のとおりです。
CONVERT(value_exp, data_type)
関数は、指定したdata_typeに変換 value_exp で指定された値を返 します。 ここで、data_type は次のいずれかのキーワードです。
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
明示的なデータ型変換関数の ODBC 構文では、変換形式の指定はサポートされていません。 基になるデータ ソースで明示的な形式の指定がサポートされている場合、ドライバーは既定値を指定するか、形式指定を実装する必要があります。
引数value_expには、列名、別のスカラー関数の結果、または数値リテラルまたは文字列リテラルを指定できます。 次に例を示します。
{ fn CONVERT( { fn CURDATE() }, SQL_CHAR ) }
は CURDATE スカラー関数の出力を文字列に変換します。
ODBC ではスカラー関数からの戻り値にデータ型が必要ないため (多くの場合、関数はデータ ソース固有であるため)、アプリケーションでは可能な限り CONVERT スカラー関数を使用してデータ型変換を強制する必要があります。
次の 2 つの例は、 CONVERT 関数の使用方法を示しています。 これらの例では、EMPLOYEES という名前のテーブルが存在し、型が SQL_SMALLINT の EMPNO 列と、SQL_CHAR型の EMPNAME 列が存在することを前提としています。
アプリケーションで次の SQL ステートメントが指定されている場合:
SELECT EMPNO FROM EMPLOYEES WHERE {fn CONVERT(EMPNO,SQL_CHAR)} LIKE '1%'
ORACLE 用ドライバーは、SQL ステートメントを次のように変換します。
SELECT EMPNO FROM EMPLOYEES WHERE to_char(EMPNO) LIKE '1%'
SQL Server用のドライバーは、SQL ステートメントを次のように変換します。
SELECT EMPNO FROM EMPLOYEES WHERE convert(char,EMPNO) LIKE '1%'
アプリケーションで次の SQL ステートメントが指定されている場合:
SELECT {fn ABS(EMPNO)}, {fn CONVERT(EMPNAME,SQL_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
Ingres のドライバーは、SQL ステートメントを次のように変換します。
SELECT abs(EMPNO), int2(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示