Bagikan melalui


Fungsi Konversi Jenis Data Eksplisit

Konversi jenis data eksplisit ditentukan dalam hal definisi jenis data SQL.

Sintaks ODBC untuk fungsi konversi jenis data eksplisit tidak membatasi konversi. Validitas konversi tertentu dari satu jenis data ke jenis data lain akan ditentukan oleh setiap implementasi khusus driver. Driver akan, karena menerjemahkan sintaks ODBC ke dalam sintaksis asli, menolak konversi yang, meskipun legal dalam sintaks ODBC, tidak didukung oleh sumber data. Fungsi ODBC SQLGetInfo, dengan opsi konversi (seperti SQL_CONVERT_BIGINT, SQL_CONVERT_BINARY, SQL_CONVERT_INTERVAL_YEAR_MONTH, dan sebagainya), menyediakan cara untuk menanyakan tentang konversi yang didukung oleh sumber data.

Format fungsi CONVERT adalah:

CONVERT(value_exp, data_type)

Fungsi mengembalikan nilai yang ditentukan oleh value_exp dikonversi ke data_type yang ditentukan, di mana data_type adalah salah satu kata kunci berikut:

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

Sintaks ODBC untuk fungsi konversi jenis data eksplisit tidak mendukung spesifikasi format konversi. Jika spesifikasi format eksplisit didukung oleh sumber data yang mendasar, driver harus menentukan nilai default atau menerapkan spesifikasi format.

Argumen value_exp dapat berupa nama kolom, hasil fungsi skalar lain, atau harfiah numerik atau string. Contohnya:

{ fn CONVERT( { fn CURDATE() }, SQL_CHAR ) }  

mengonversi output fungsi skalar CURDATE menjadi string karakter.

Karena ODBC tidak mengamanatkan jenis data untuk mengembalikan nilai dari fungsi skalar (karena fungsi sering kali khusus sumber data), aplikasi harus menggunakan fungsi skalar CONVERT jika memungkinkan untuk memaksa konversi jenis data.

Dua contoh berikut mengilustrasikan penggunaan fungsi CONVERT . Contoh-contoh ini mengasumsikan keberadaan tabel yang disebut EMPLOYEES, dengan kolom EMPNO jenis SQL_SMALLINT dan kolom EMPNAME jenis SQL_CHAR.

Jika aplikasi menentukan pernyataan SQL berikut:

SELECT EMPNO FROM EMPLOYEES WHERE {fn CONVERT(EMPNO,SQL_CHAR)} LIKE '1%'  
  • Driver untuk ORACLE menerjemahkan pernyataan SQL ke:

    SELECT EMPNO FROM EMPLOYEES WHERE to_char(EMPNO) LIKE '1%'  
    
  • Driver untuk SQL Server menerjemahkan pernyataan SQL ke:

    SELECT EMPNO FROM EMPLOYEES WHERE convert(char,EMPNO) LIKE '1%'  
    

Jika aplikasi menentukan pernyataan SQL berikut:

SELECT {fn ABS(EMPNO)}, {fn CONVERT(EMPNAME,SQL_SMALLINT)}  
   FROM EMPLOYEES WHERE EMPNO <> 0  
  • Driver untuk ORACLE menerjemahkan pernyataan SQL ke:

    SELECT abs(EMPNO), to_number(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0  
    
  • Driver untuk SQL Server menerjemahkan pernyataan SQL ke:

    SELECT abs(EMPNO), convert(smallint, EMPNAME) FROM EMPLOYEES  
       WHERE EMPNO <> 0  
    
  • Driver untuk Ingres menerjemahkan pernyataan SQL ke:

    SELECT abs(EMPNO), int2(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0