View a markdown version of this page

Kompatibilitas dan konversi tipe - AWS Clean Rooms

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kompatibilitas dan konversi tipe

Topik berikut menjelaskan cara kerja aturan konversi tipe dan kompatibilitas tipe data di AWS Clean Rooms Spark SQL.

Kompatibilitas

Pencocokan tipe data dan pencocokan nilai literal dan konstanta dengan tipe data terjadi selama berbagai operasi database, termasuk yang berikut:

  • Operasi bahasa manipulasi data (DML) pada tabel

  • Kueri UNION, INTERSECT, dan EXCEPT

  • Ekspresi CASE

  • Evaluasi predikat, seperti LIKE dan IN

  • Evaluasi fungsi SQL yang melakukan perbandingan atau ekstraksi data

  • Perbandingan dengan operator matematika

Hasil operasi ini tergantung pada aturan konversi tipe dan kompatibilitas tipe data. Kompati bilitas menyiratkan bahwa pencocokan satu-ke-satu dari nilai tertentu dan tipe data tertentu tidak selalu diperlukan. Karena beberapa tipe data kompatibel, konversi implisit, atau paksaan, dimungkinkan. Untuk informasi selengkapnya, lihat Jenis konversi implisit. Ketika tipe data tidak kompatibel, terkadang Anda dapat mengonversi nilai dari satu tipe data ke tipe data lainnya dengan menggunakan fungsi konversi eksplisit.

Kompatibilitas umum dan aturan konversi

Perhatikan aturan kompatibilitas dan konversi berikut:

  • Secara umum, tipe data yang termasuk dalam kategori tipe yang sama (seperti tipe data numerik yang berbeda) kompatibel dan dapat dikonversi secara implisit.

    Misalnya, dengan konversi implisit Anda dapat memasukkan nilai desimal ke dalam kolom integer. Desimal dibulatkan untuk menghasilkan bilangan bulat. Atau Anda dapat mengekstrak nilai numerik, seperti2008, dari tanggal dan memasukkan nilai itu ke dalam kolom integer.

  • Tipe data numerik memberlakukan kondisi luapan yang terjadi saat Anda mencoba memasukkan nilai di luar jangkauan. Misalnya, nilai desimal dengan presisi 5 tidak cocok dengan kolom desimal yang didefinisikan dengan presisi 4. Bilangan bulat atau seluruh bagian desimal tidak pernah terpotong. Namun, bagian pecahan dari desimal dapat dibulatkan ke atas atau ke bawah, sebagaimana mestinya. Namun, hasil pemertian eksplisit nilai yang dipilih dari tabel tidak dibulatkan.

  • Berbagai jenis string karakter kompatibel. String kolom VARCHAR yang berisi data byte tunggal dan string kolom CHAR sebanding dan secara implisit dapat dikonversi. String VARCHAR yang berisi data multibyte tidak sebanding. Juga, Anda dapat mengonversi string karakter ke tanggal, waktu, stempel waktu, atau nilai numerik jika string adalah nilai literal yang sesuai. Setiap spasi di depan atau di belakang diabaikan. Sebaliknya, Anda dapat mengonversi tanggal, waktu, stempel waktu, atau nilai numerik ke string karakter panjang tetap atau panjang variabel.

    catatan

    String karakter yang ingin Anda tuang ke tipe numerik harus berisi representasi karakter dari angka. Misalnya, Anda dapat mentransmisikan string '1.0' atau '5.9' nilai desimal, tetapi Anda tidak dapat mentransmisikan string 'ABC' ke jenis numerik apa pun.

  • Jika Anda membandingkan nilai DECIMAL dengan string AWS Clean Rooms karakter, mencoba mengubah string karakter menjadi nilai DECIMAL. Saat membandingkan semua nilai numerik lainnya dengan string karakter, nilai numerik dikonversi ke string karakter. Untuk menerapkan konversi yang berlawanan (misalnya, mengubah string karakter menjadi bilangan bulat, atau mengubah nilai DECIMAL menjadi string karakter), gunakan fungsi eksplisit, sepertiFungsi CAST.

  • Untuk mengonversi nilai DECIMAL atau NUMERIC 64-bit ke presisi yang lebih tinggi, Anda harus menggunakan fungsi konversi eksplisit seperti fungsi CAST atau CONVERT.

Jenis konversi implisit

Ada dua jenis konversi implisit:

  • Konversi implisit dalam tugas, seperti menyetel nilai dalam perintah INSERT atau UPDATE

  • Konversi implisit dalam ekspresi, seperti melakukan perbandingan dalam klausa WHERE

Tabel berikut mencantumkan tipe data yang dapat dikonversi secara implisit dalam tugas atau ekspresi. Anda juga dapat menggunakan fungsi konversi eksplisit untuk melakukan konversi ini.

Dari jenis Untuk mengetik
BIGINT BOOLEAN
CHAR
DESIMAL (NUMERIK)
PRESISI GANDA (FLOAT8)
INTEGER
NYATA (FLOAT4)
SMALLINT atau SHORT
VARCHAR
CHAR VARCHAR
DATE CHAR
VARCHAR
TIMESTAMP
TIMESTAMPTZ
DESIMAL (NUMERIK) BIGINT atau PANJANG
CHAR
PRESISI GANDA (FLOAT8)
INT INTEGER)
NYATA (FLOAT4)
SMALLINT atau SHORT
VARCHAR
PRESISI GANDA (FLOAT8) BIGINT atau PANJANG
CHAR
DESIMAL (NUMERIK)
INTEGER (INT)
NYATA (FLOAT4)
SMALLINT atau SHORT
VARCHAR
INTEGER (INT) BIGINT atau PANJANG
BOOLEAN
CHAR
DESIMAL (NUMERIK)
PRESISI GANDA (FLOAT8)
NYATA (FLOAT4)
SMALLINT atau SHORT
VARCHAR
NYATA (FLOAT4) BIGINT atau PANJANG
CHAR
DESIMAL (NUMERIK)
INTEGER (INT)
SMALLINT atau SHORT
VARCHAR
SMALLINT BIGINT atau PANJANG
BOOLEAN
CHAR
DESIMAL (NUMERIK)
PRESISI GANDA (FLOAT8)
BILANGAN BULAT (INT)
NYATA (FLOAT4)
VARCHAR
TIME VARCHAR
TIMETZ
catatan

Konversi implisit antara DATE, TIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ, atau string karakter menggunakan zona waktu sesi saat ini.

Tipe data VARBYTE tidak dapat dikonversi secara implisit ke tipe data lainnya. Lihat informasi yang lebih lengkap di Fungsi CAST.