

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

# Ekspresi bersyarat
<a name="sql-functions-conditional-expressions-spark"></a>

Dalam SQL, ekspresi kondisional digunakan untuk membuat keputusan berdasarkan kondisi tertentu. Mereka memungkinkan Anda untuk mengontrol aliran pernyataan SQL Anda dan mengembalikan nilai yang berbeda atau melakukan tindakan yang berbeda berdasarkan evaluasi satu atau lebih kondisi.

AWS Clean Rooms mendukung ekspresi bersyarat berikut:

**Topics**
+ [Ekspresi bersyarat CASE](CASE_function.md)
+ [COALESCEekspresi](coalesce-function.md)
+ [Ekspresi terbesar dan terkecil](GREATEST_LEAST.md)
+ [Ekspresi IF](IF.md)
+ [Ekspresi IS\$1NULL](IS_NULL.md)
+ [Ekspresi IS\$1NOT\$1NULL](IS_NOT_NULL.md)
+ [Fungsi NVL dan COALESCE](NVL_function.md)
+ [NVL2 fungsi](NVL2.md)
+ [Fungsi NULLIF](NULLIF_function.md)

# Ekspresi bersyarat CASE
<a name="CASE_function"></a>

Ekspresi CASE adalah ekspresi bersyarat, mirip dengan if/then/else pernyataan yang ditemukan dalam bahasa lain. CASE digunakan untuk menentukan hasil jika terdapat beberapa kondisi. Gunakan CASE di mana ekspresi SQL valid, seperti dalam perintah SELECT.

Ada dua jenis ekspresi CASE: sederhana dan dicari.
+ Dalam ekspresi CASE sederhana, ekspresi dibandingkan dengan nilai. Ketika kecocokan ditemukan, tindakan yang ditentukan dalam klausul THEN diterapkan. Jika tidak ada kecocokan ditemukan, tindakan dalam klausul ELSE diterapkan.
+ Dalam ekspresi CASE yang dicari, setiap CASE dievaluasi berdasarkan ekspresi Boolean, dan pernyataan CASE mengembalikan CASE yang cocok pertama. Jika tidak ada kecocokan yang ditemukan di antara klausa WHEN, tindakan dalam klausa ELSE dikembalikan.

## Sintaksis
<a name="CASE_function-syntax"></a>

Pernyataan CASE sederhana yang digunakan untuk menyesuaikan kondisi:

```
CASE expression
  WHEN value THEN result
  [WHEN...]
  [ELSE result]
END
```

Pernyataan CASE yang dicari digunakan untuk mengevaluasi setiap kondisi:

```
CASE
  WHEN condition THEN result
  [WHEN ...]
  [ELSE result]
END
```

## Argumen
<a name="CASE_function-arguments"></a>

 *ekspresi*   
Nama kolom atau ekspresi yang valid.

 *nilai*   
Nilai yang dibandingkan dengan ekspresi, seperti konstanta numerik atau string karakter.

 *hasil*   
Nilai target atau ekspresi yang dikembalikan ketika ekspresi atau kondisi Boolean dievaluasi. Tipe data dari semua ekspresi hasil harus dikonversi ke tipe output tunggal.

 *ketentuan*   
Ekspresi Boolean yang mengevaluasi benar atau salah. Jika *kondisi* benar, nilai ekspresi CASE adalah hasil yang mengikuti kondisi, dan sisa ekspresi CASE tidak diproses. Jika *kondisinya* salah, klausa WHEN berikutnya dievaluasi. Jika tidak ada hasil kondisi WHEN yang benar, nilai ekspresi CASE adalah hasil dari klausa ELSE. Jika klausa ELSE dihilangkan dan tidak ada kondisi yang benar, hasilnya adalah nol.

## Contoh
<a name="CASE_function-examples"></a>

Gunakan ekspresi CASE sederhana untuk mengganti `New York City` `Big Apple` dengan query terhadap tabel VENUE. Ganti semua nama kota lainnya dengan `other`.

```
select venuecity,
  case venuecity
    when 'New York City'
    then 'Big Apple' else 'other'
  end 
from venue
order by venueid desc;

venuecity        |   case
-----------------+-----------
Los Angeles      | other
New York City    | Big Apple
San Francisco    | other
Baltimore        | other
...
```

Gunakan ekspresi CASE yang dicari untuk menetapkan nomor grup berdasarkan nilai PRICEPAID untuk penjualan tiket individu:

```
select pricepaid,
  case when pricepaid <10000 then 'group 1'
    when pricepaid >10000 then 'group 2'
    else 'group 3'
  end 
from sales
order by 1 desc;

pricepaid |  case
----------+---------
12624     | group 2
10000     | group 3
10000     | group 3
9996      | group 1
9988      | group 1
...
```

# COALESCEekspresi
<a name="coalesce-function"></a>

COALESCEEkspresi mengembalikan nilai ekspresi pertama dalam daftar yang tidak null. Jika semua ekspresi adalah null, hasilnya adalah null. Ketika nilai non-null ditemukan, ekspresi yang tersisa dalam daftar tidak dievaluasi.

Jenis ekspresi ini berguna ketika Anda ingin mengembalikan nilai cadangan untuk sesuatu ketika nilai yang diinginkan hilang atau nol. Misalnya, kueri mungkin mengembalikan salah satu dari tiga nomor telepon (sel, rumah, atau kantor, dalam urutan itu), mana yang ditemukan pertama kali dalam tabel (bukan nol).

## Sintaksis
<a name="coalesce-function-syntax"></a>

```
COALESCE (expression, expression, ... )
```

## Contoh
<a name="coalesce-function-examples"></a>

Terapkan COALESCE ekspresi ke dua kolom.

```
select coalesce(start_date, end_date)
from datetable
order by 1;
```

Nama kolom default untuk ekspresi NVL adalah. COALESCE Query berikut mengembalikan hasil yang sama.

```
select coalesce(start_date, end_date) from datetable order by 1;
```

# Ekspresi terbesar dan terkecil
<a name="GREATEST_LEAST"></a>

Mengembalikan nilai terbesar atau terkecil dari daftar sejumlah ekspresi.

## Sintaksis
<a name="GREATEST_LEAST-synopsis"></a>

```
GREATEST (value [, ...])
LEAST (value [, ...])
```

## Parameter
<a name="GREATEST_LEAST-arguments"></a>

*expression\$1list*  
Daftar ekspresi yang dipisahkan koma, seperti nama kolom. Ekspresi semua harus dikonversi ke tipe data umum. Nilai NULL dalam daftar diabaikan. Jika semua ekspresi mengevaluasi ke NULL, hasilnya adalah NULL.

## Pengembalian
<a name="GREATEST_LEAST-returns"></a>

Mengembalikan nilai terbesar (untuk GREATEST) atau least (untuk LEAST) dari daftar ekspresi yang disediakan.

## Contoh
<a name="GREATEST_LEAST-examples"></a>

Contoh berikut mengembalikan nilai tertinggi menurut abjad untuk `firstname` atau. `lastname`

```
select firstname, lastname, greatest(firstname,lastname) from users
where userid < 10
order by 3;

 firstname | lastname  | greatest
-----------+-----------+-----------
 Alejandro | Rosalez   | Ratliff
 Carlos    | Salazar   | Carlos
 Jane      | Doe       | Doe
 John      | Doe       | Doe
 John      | Stiles    | John
 Shirley   | Rodriguez | Rodriguez
 Terry     | Whitlock  | Terry
 Richard   | Roe       | Richard
 Xiulan    | Wang      | Wang
(9 rows)
```

# Ekspresi IF
<a name="IF"></a>

Fungsi kondisional IF mengembalikan salah satu dari dua nilai berdasarkan kondisi. 

Fungsi ini adalah pernyataan aliran kontrol umum yang digunakan dalam SQL untuk membuat keputusan dan mengembalikan nilai yang berbeda berdasarkan evaluasi suatu kondisi. Ini berguna untuk menerapkan logika if-else sederhana dalam kueri.

## Sintaksis
<a name="IF-syntax"></a>

```
if(expr1, expr2, expr3) 
```

## Pendapat
<a name="IF-arguments"></a>

*expr1*  
Kondisi atau ekspresi yang dievaluasi. Jika ya`true`, fungsi akan mengembalikan nilai *expr2*. *Jika *expr1* adalah`false`, fungsi akan mengembalikan nilai expr3.*

*expr2*  
Ekspresi yang dievaluasi dan dikembalikan jika *expr1* adalah. `true`

*expr3*  
Ekspresi yang dievaluasi dan dikembalikan jika *expr1* adalah. `false`

## Pengembalian
<a name="IF-returns"></a>

Jika `expr1` mengevaluasi`true`, maka kembali`expr2`; jika tidak kembali`expr3`.

## Contoh
<a name="IF-example"></a>

Contoh berikut menggunakan `if()` fungsi untuk mengembalikan salah satu dari dua nilai berdasarkan kondisi. Kondisi yang dievaluasi adalah`1 < 2`, yaitu`true`, sehingga nilai pertama `'a'` dikembalikan.

```
SELECT if(1 < 2, 'a', 'b');
 a]
```

# Ekspresi IS\$1NULL
<a name="IS_NULL"></a>

Ekspresi IS\$1NULL kondisional digunakan untuk memeriksa apakah nilai adalah null.

Ungkapan ini adalah sinonim untuk. IS NULL

## Sintaksis
<a name="IS_NULL-syntax"></a>

```
is_null(expr)
```

## Pendapat
<a name="IS_NULL-arguments"></a>

*expr*  
Ekspresi jenis apa pun.

## Pengembalian
<a name="IS_NULL-returns"></a>

Ekspresi IS\$1NULL kondisional mengembalikan Boolean. Jika `expr1` NULL, kembali`true`, jika tidak kembali`false`.

## Contoh
<a name="IS_NULL-example"></a>

Contoh berikut memeriksa `1` apakah nilainya nol, dan mengembalikan hasil boolean `true` karena 1 adalah nilai yang valid, non-null.

```
SELECT is not null(1);
 true
```

Contoh berikut memilih `id` kolom dari `squirrels` tabel, tetapi hanya untuk baris di mana kolom usia berada`null`.

```
SELECT id FROM squirrels WHERE is_null(age)
```

# Ekspresi IS\$1NOT\$1NULL
<a name="IS_NOT_NULL"></a>

Ekspresi IS\$1NOT\$1NULL kondisional digunakan untuk memeriksa apakah nilai tidak null.

Ungkapan ini adalah sinonim untuk. IS NOT NULL

## Sintaksis
<a name="IS_NOT_NULL-syntax"></a>

```
is_not_null(expr)
```

## Pendapat
<a name="IS_NOT_NULL-arguments"></a>

*expr*  
Ekspresi jenis apa pun.

## Pengembalian
<a name="IS_NOT_NULL-returns"></a>

Ekspresi IS\$1NOT\$1NULL kondisional mengembalikan Boolean. Jika `expr1` tidak NULL, kembali`true`, jika tidak kembali`false`.

## Contoh
<a name="IS_NOT_NULL-example"></a>

Contoh berikut memeriksa `1` apakah nilainya tidak null, dan mengembalikan hasil boolean `true` karena 1 adalah nilai yang valid, non-null.

```
SELECT is not null(1);
 true
```

Contoh berikut memilih `id` kolom dari `squirrels` tabel, tetapi hanya untuk baris di mana kolom usia tidak`null`.

```
SELECT id FROM squirrels WHERE is_not_null(age)
```

# Fungsi NVL dan COALESCE
<a name="NVL_function"></a>

Mengembalikan nilai ekspresi pertama yang tidak null dalam serangkaian ekspresi. Ketika nilai non-null ditemukan, ekspresi yang tersisa dalam daftar tidak dievaluasi. 

NVL identik dengan COALESCE. Mereka adalah sinonim. Topik ini menjelaskan sintaks dan berisi contoh untuk keduanya.

## Sintaksis
<a name="NVL_function-synopsis"></a>

```
NVL( expression, expression, ... )
```

Sintaks untuk COALESCE adalah sama:

```
COALESCE( expression, expression, ... )
```

Jika semua ekspresi adalah null, hasilnya adalah null.

Fungsi-fungsi ini berguna ketika Anda ingin mengembalikan nilai sekunder ketika nilai primer hilang atau null. Misalnya, kueri mungkin mengembalikan yang pertama dari tiga nomor telepon yang tersedia: ponsel, rumah, atau kantor. Urutan ekspresi dalam fungsi menentukan urutan evaluasi.

## Argumen
<a name="NVL_function-arguments"></a>

 *ekspresi*   
Ekspresi, seperti nama kolom, yang akan dievaluasi untuk status null.

## Jenis pengembalian
<a name="NVL_function-returntype"></a>

AWS Clean Rooms menentukan tipe data dari nilai yang dikembalikan berdasarkan ekspresi masukan. Jika tipe data dari ekspresi input tidak memiliki tipe umum, maka kesalahan dikembalikan.

## Contoh
<a name="NVL_function-examples"></a>

Jika daftar berisi ekspresi integer, fungsi mengembalikan integer. 

```
SELECT COALESCE(NULL, 12, NULL);

coalesce
--------------
12
```

Contoh ini, yang sama dengan contoh sebelumnya, kecuali menggunakan NVL, mengembalikan hasil yang sama. 

```
SELECT NVL(NULL, 12, NULL);

coalesce
--------------
12
```

Contoh berikut mengembalikan tipe string.

```
SELECT COALESCE(NULL, 'AWS Clean Rooms', NULL);

coalesce
--------------
AWS Clean Rooms
```

Contoh berikut menghasilkan kesalahan karena tipe data bervariasi dalam daftar ekspresi. Dalam hal ini, ada tipe string dan tipe angka dalam daftar.

```
SELECT COALESCE(NULL, 'AWS Clean Rooms', 12);
ERROR: invalid input syntax for integer: "AWS Clean Rooms"
```

# NVL2 fungsi
<a name="NVL2"></a>

Mengembalikan salah satu dari dua nilai berdasarkan apakah ekspresi tertentu mengevaluasi ke NULL atau TIDAK NULL.

## Sintaksis
<a name="NVL2-synopsis"></a>

```
NVL2 ( expression, not_null_return_value, null_return_value )
```

## Argumen
<a name="NVL2-arguments"></a>

 *ekspresi*   
Ekspresi, seperti nama kolom, yang akan dievaluasi untuk status null.

 *not\$1null\$1return\$1value*   
Nilai yang dikembalikan jika *ekspresi* mengevaluasi ke NOT NULL. Nilai *not\$1null\$1return\$1value* harus memiliki tipe data yang sama dengan *ekspresi* atau secara implisit dapat dikonversi ke tipe data tersebut.

 *null\$1return\$1value*   
Nilai yang dikembalikan jika *ekspresi* mengevaluasi ke NULL. Nilai *null\$1return\$1value* harus memiliki tipe data yang sama dengan *ekspresi* atau secara implisit dapat dikonversi ke tipe data tersebut.

## Jenis pengembalian
<a name="NVL2-return-type"></a>

Jenis NVL2 pengembalian ditentukan sebagai berikut:
+ Jika *not\$1null\$1return\$1value atau null\$1return\$1value* adalah *null, tipe data dari ekspresi not-null dikembalikan*.

*Jika kedua *not\$1null\$1return\$1value dan null\$1return\$1value* tidak null:*
+ Jika *not\$1null\$1return\$1value dan *null\$1return\$1value** memiliki tipe data yang sama, tipe data tersebut dikembalikan.
+ Jika *not\$1null\$1return\$1value dan null\$1return\$1value* *memiliki tipe data numerik yang berbeda, tipe data numerik terkecil yang kompatibel dikembalikan*.
+ Jika *not\$1null\$1return\$1value dan null\$1return\$1value* *memiliki tipe data datetime yang berbeda, tipe data stempel waktu dikembalikan*.
+ *Jika *not\$1null\$1return\$1value dan null\$1return\$1value* memiliki tipe data karakter yang berbeda, tipe data *not\$1null\$1return\$1value* dikembalikan.*
+ *Jika *not\$1null\$1return\$1value dan null\$1return\$1value* memiliki tipe data numerik dan non-numerik campuran, tipe data *not\$1null\$1return\$1value* dikembalikan.*

**penting**  
*Dalam dua kasus terakhir di mana tipe data *not\$1null\$1return\$1value dikembalikan, null\$1return\$1value* secara implisit dilemparkan ke tipe data tersebut.* Jika tipe data tidak kompatibel, fungsi gagal.

## Catatan penggunaan
<a name="nvl2-usage-notes"></a>

*Untuk NVL2, pengembalian akan memiliki nilai parameter *not\$1null\$1return\$1value atau null\$1return\$1value*, mana saja yang dipilih oleh fungsi, tetapi akan memiliki tipe data *not\$1null\$1return\$1value*.*

Misalnya, dengan asumsi kolom1 adalah NULL, kueri berikut akan mengembalikan nilai yang sama. Namun, tipe data nilai pengembalian DECODE adalah INTEGER dan tipe data nilai yang NVL2 dikembalikan adalah VARCHAR.

```
select decode(column1, null, 1234, '2345');
select nvl2(column1, '2345', 1234);
```

## Contoh
<a name="NVL2-examples"></a>

Contoh berikut memodifikasi beberapa data sampel, kemudian mengevaluasi dua bidang untuk memberikan informasi kontak yang sesuai bagi pengguna: 

```
update users set email = null where firstname = 'Aphrodite' and lastname = 'Acevedo';

select (firstname + ' ' + lastname) as name, 
nvl2(email, email, phone) AS contact_info
from users 
where state = 'WA'
and lastname  like 'A%'
order by lastname, firstname;

name			     contact_info	
--------------------+-------------------------------------------
Aphrodite Acevedo	(555) 555-0100
Caldwell Acevedo 	Nunc.sollicitudin@example.ca
Quinn Adams		   vel@example.com
Kamal Aguilar		 quis@example.com
Samson Alexander	 hendrerit.neque@example.com
Hall Alford		   ac.mattis@example.com
Lane Allen		    et.netus@example.com
Xander Allison	   ac.facilisis.facilisis@example.com
Amaya Alvarado	   dui.nec.tempus@example.com
Vera Alvarez		  at.arcu.Vestibulum@example.com
Yetta Anthony		 enim.sit@example.com
Violet Arnold		 ad.litora@example.comm
August Ashley		 consectetuer.euismod@example.com
Karyn Austin		  ipsum.primis.in@example.com
Lucas Ayers		   at@example.com
```

# Fungsi NULLIF
<a name="NULLIF_function"></a>

Membandingkan dua argumen dan mengembalikan null jika argumen sama. Jika mereka tidak sama, argumen pertama dikembalikan.

## Sintaksis
<a name="NULLIF_function-synopsis"></a>

Ekspresi NULLIF membandingkan dua argumen dan mengembalikan null jika argumennya sama. Jika mereka tidak sama, argumen pertama dikembalikan. Ekspresi ini adalah kebalikan dari ekspresi NVL atau COALESCE.

```
NULLIF ( expression1, expression2 )
```

## Argumen
<a name="NULLIF_function-arguments"></a>

 *ekspresi1, ekspresi2*   
Kolom target atau ekspresi yang dibandingkan. Tipe pengembalian sama dengan tipe ekspresi pertama. 

## Contoh
<a name="NULLIF_function-examples"></a>

Dalam contoh berikut, query mengembalikan string `first` karena argumen tidak sama.

```
SELECT NULLIF('first', 'second');

case
-------
first
```

Dalam contoh berikut, query kembali `NULL` karena argumen literal string sama.

```
SELECT NULLIF('first', 'first');

case
-------
NULL
```

Dalam contoh berikut, query kembali `1` karena argumen integer tidak sama.

```
SELECT NULLIF(1, 2);

case
-------
1
```

Dalam contoh berikut, query kembali `NULL` karena argumen integer sama.

```
SELECT NULLIF(1, 1);

case
-------
NULL
```

Dalam contoh berikut, query mengembalikan null ketika nilai LISTID dan SALESID cocok:

```
select nullif(listid,salesid), salesid
from sales where salesid<10 order by 1, 2 desc;

listid  | salesid
--------+---------
     4  |       2
     5  |       4
     5  |       3
     6  |       5
     10 |       9
     10 |       8
     10 |       7
     10 |       6
        |       1
(9 rows)
```