Ketik kompatibilitas dan konversi - AWS Clean Rooms

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

Ketik kompatibilitas dan konversi

Diskusi berikut menjelaskan cara kerja aturan konversi tipe dan kompatibilitas tipe data AWS Clean Rooms.

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 (DHTML) pada tabel

  • UNION, INTERSECT, dan EXCEPT query

  • Ekspresi CASE

  • Evaluasi predikat, seperti LIKE dan IN

  • Evaluasi fungsi SQL yang melakukan perbandingan atau ekstraksi data

  • Perbandingan dengan operator matematika

Hasil operasi ini bergantung pada aturan konversi tipe dan kompatibilitas tipe data. Kompatibilitas menyiratkan bahwa one-to-one pencocokan 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 menyisipkan 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 menyisipkan nilai. out-of-range Misalnya, nilai desimal dengan presisi 5 tidak cocok dengan kolom desimal yang didefinisikan dengan presisi 4. Sebuah integer atau seluruh bagian dari desimal tidak pernah terpotong. Namun, bagian pecahan desimal dapat dibulatkan ke atas atau ke bawah, sebagaimana mestinya. Namun, hasil pemeran 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 dapat dikonversi secara implisit. String VARCHAR yang berisi data multibyte tidak sebanding. Selain itu, Anda dapat mengonversi string karakter ke tanggal, waktu, stempel waktu, atau nilai numerik jika string adalah nilai literal yang sesuai. Setiap spasi utama atau belakang diabaikan. Sebaliknya, Anda dapat mengonversi tanggal, waktu, stempel waktu, atau nilai numerik menjadi string karakter dengan panjang tetap atau panjang variabel.

    catatan

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

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

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

  • Saat mengonversi DATE atau TIMESTAMP ke TIMESTAMPTZ, atau mengonversi TIME ke TIMETZ, zona waktu diatur ke zona waktu sesi saat ini. Zona waktu sesi adalah UTC secara default.

  • Demikian pula, TIMESTAMPTZ dikonversi ke DATE, TIME, atau TIMESTAMP berdasarkan zona waktu sesi saat ini. Zona waktu sesi adalah UTC secara default. Setelah konversi, informasi zona waktu dijatuhkan.

  • String karakter yang mewakili stempel waktu dengan zona waktu yang ditentukan dikonversi ke TIMESTAMPTZ menggunakan zona waktu sesi saat ini, yang merupakan UTC secara default. Demikian juga, string karakter yang mewakili waktu dengan zona waktu yang ditentukan dikonversi ke TIMETZ menggunakan zona waktu sesi saat ini, yang merupakan UTC secara default.

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 tipe Untuk mengetik
BIGINT BOOLEAN
CHAR
DESIMAL (NUMERIK)
PRESISI GANDA (FLOAT8)
INTEGER
NYATA (FLOAT4)
SMALLINT
VARCHAR
CHAR VARCHAR
DATE CHAR
VARCHAR
TIMESTAMP
TIMESTAMPTZ
DESIMAL (NUMERIK) BIGINT
CHAR
PRESISI GANDA (FLOAT8)
INTEGER INT)
NYATA (FLOAT4)
SMALLINT
VARCHAR
PRESISI GANDA (FLOAT8) BIGINT
CHAR
DESIMAL (NUMERIK)
BILANGAN BULAT (INT)
NYATA (FLOAT4)
SMALLINT
VARCHAR
BILANGAN BULAT (INT) BIGINT
BOOLEAN
CHAR
DESIMAL (NUMERIK)
PRESISI GANDA (FLOAT8)
NYATA (FLOAT4)
SMALLINT
VARCHAR
NYATA (FLOAT4) BIGINT
CHAR
DESIMAL (NUMERIK)
BILANGAN BULAT (INT)
SMALLINT
VARCHAR
SMALLINT BIGINT
BOOLEAN
CHAR
DESIMAL (NUMERIK)
PRESISI GANDA (FLOAT8)
BILANGAN BULAT (INT)
NYATA (FLOAT4)
VARCHAR
TIMESTAMP CHAR
DATE
VARCHAR
TIMESTAMPTZ
TIME
TIMESTAMPTZ CHAR
DATE
VARCHAR
TIMESTAMP
JADWAL
TIME VARCHAR
JADWAL
JADWAL VARCHAR
TIME
catatan

Konversi implisit antara TIMESTAMPTZ, TIMESTAMP, DATE, TIME, TIMETZ, atau string karakter menggunakan zona waktu sesi saat ini.

Tipe data VARBYTE tidak dapat secara implisit dikonversi ke tipe data lainnya. Untuk informasi selengkapnya, lihat Fungsi CAST.