Ekspresi (Transact-SQL)

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Adalah kombinasi simbol dan operator yang dievaluasi mesin database SQL Server untuk mendapatkan satu nilai data. Ekspresi sederhana dapat berupa fungsi konstanta, variabel, kolom, atau skalar tunggal. Operator dapat digunakan untuk menggabungkan dua atau beberapa ekspresi sederhana ke dalam ekspresi kompleks.

tautan topikIkon Konvensi Sintaks Transact-SQL

Sintaks

-- Syntax for SQL Server and Azure SQL Database  
  
{ constant | scalar_function | [ table_name. ] column | variable   
    | ( expression ) | ( scalar_subquery )   
    | { unary_operator } expression   
    | expression { binary_operator } expression   
    | ranking_windowed_function | aggregate_windowed_function  
}  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse  

-- Expression in a SELECT statement  
<expression> ::=   
{  
    constant   
    | scalar_function   
    | column  
    | variable  
    | ( expression  )  
    | { unary_operator } expression   
    | expression { binary_operator } expression   
}  
[ COLLATE Windows_collation_name ]  
  
-- Scalar Expression in a DECLARE, SET, IF...ELSE, or WHILE statement  
<scalar_expression> ::=  
{  
    constant   
    | scalar_function   
    | variable  
    | ( expression  )  
    | (scalar_subquery )  
    | { unary_operator } expression   
    | expression { binary_operator } expression   
}  
[ COLLATE { Windows_collation_name ]  
  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

Istilah Definisi
constant Adalah simbol yang mewakili satu nilai data tertentu. Untuk informasi selengkapnya, lihat Konstanta (Transact-SQL).
scalar_function Adalah unit sintaks Transact-SQL yang menyediakan layanan tertentu dan mengembalikan satu nilai. scalar_function dapat berupa fungsi skalar bawaan, seperti fungsi SUM, GETDATE, atau CAST, atau fungsi skalar yang ditentukan pengguna.
[ table_name. Adalah nama atau alias tabel.
Kolom Adalah nama kolom. Hanya nama kolom yang diperbolehkan dalam ekspresi.
Variabel Adalah nama variabel, atau parameter. Untuk informasi selengkapnya, lihat DECLARE @local_variable (Transact-SQL).
(ekspresi) Adalah ekspresi yang valid seperti yang didefinisikan dalam topik ini. Tanda kurung adalah operator pengelompokan yang memastikan bahwa semua operator dalam ekspresi dalam tanda kurung dievaluasi sebelum ekspresi yang dihasilkan digabungkan dengan yang lain.
(scalar_subquery) Adalah subkueri yang mengembalikan satu nilai. Contohnya:

SELECT MAX(UnitPrice)

FROM Products
{ unary_operator } Operator unary hanya dapat diterapkan ke ekspresi yang mengevaluasi ke salah satu jenis data dari kategori tipe data numerik. Adalah operator yang hanya memiliki satu operan numerik:

+ menunjukkan angka positif.

- Menunjukkan angka negatif.

~ menunjukkan operator pelengkap seseorang.
{ binary_operator } Adalah operator yang menentukan cara dua ekspresi digabungkan untuk menghasilkan satu hasil. binary_operator bisa menjadi operator aritmatika, operator penugasan (=), operator bitwise, operator perbandingan, operator logis, operator perangkaian string (+), atau operator unary. Untuk informasi selengkapnya tentang operator, lihat Operator (Transact-SQL).
ranking_windowed_function Apakah ada fungsi peringkat Transact-SQL. Untuk informasi selengkapnya, lihat Fungsi Peringkat (Transact-SQL).
aggregate_windowed_function Apakah ada fungsi agregat Transact-SQL dengan klausa OVER. Untuk informasi selengkapnya, lihat Klausa OVER (Transact-SQL).

Hasil Ekspresi

Untuk ekspresi sederhana yang terdiri dari satu konstanta, variabel, fungsi skalar, atau nama kolom: jenis data, kolase, presisi, skala, dan nilai ekspresi adalah jenis data, kolase, presisi, skala, dan nilai elemen yang direferensikan.

Saat dua ekspresi digabungkan dengan menggunakan operator perbandingan atau logis, jenis data yang dihasilkan adalah Boolean dan nilainya adalah salah satu dari berikut ini: TRUE, FALSE, atau UNKNOWN. Untuk informasi selengkapnya tentang jenis data Boolean, lihat Operator Perbandingan (Transact-SQL).

Saat dua ekspresi digabungkan dengan menggunakan operator aritmetika, bitwise, atau string, operator menentukan jenis data yang dihasilkan.

Ekspresi kompleks terdiri dari banyak simbol dan operator yang dievaluasi ke hasil bernilai tunggal. Jenis data, kolase, presisi, dan nilai ekspresi yang dihasilkan ditentukan dengan menggabungkan ekspresi komponen, dua per satu, hingga hasil akhir tercapai. Urutan di mana ekspresi digabungkan ditentukan oleh prioritas operator dalam ekspresi.

Keterangan

Dua ekspresi dapat digabungkan oleh operator jika keduanya memiliki jenis data yang didukung oleh operator dan setidaknya salah satu kondisi ini benar:

  • Ekspresi memiliki jenis data yang sama.

  • Jenis data dengan prioritas yang lebih rendah dapat dikonversi secara implisit ke jenis data dengan prioritas jenis data yang lebih tinggi.

Jika ekspresi tidak memenuhi kondisi ini, fungsi CAST atau CONVERT dapat digunakan untuk mengonversi jenis data secara eksplisit dengan prioritas yang lebih rendah ke jenis data dengan prioritas yang lebih tinggi atau ke jenis data perantara yang dapat dikonversi secara implisit ke jenis data dengan prioritas yang lebih tinggi.

Jika tidak ada konversi implisit atau eksplisit yang didukung, kedua ekspresi tidak dapat digabungkan.

Kolase ekspresi apa pun yang mengevaluasi ke string karakter diatur dengan mengikuti aturan kolase yang diutamakan. Untuk informasi selengkapnya, lihat Kolase Prioritas (Transact-SQL).

Dalam bahasa pemrograman seperti C atau Microsoft Visual Basic, ekspresi selalu mengevaluasi ke satu hasil. Ekspresi dalam daftar pemilihan Transact-SQL mengikuti variasi pada aturan ini: Ekspresi dievaluasi satu per satu untuk setiap baris dalam tataan hasil. Ekspresi tunggal mungkin memiliki nilai yang berbeda di setiap baris kumpulan hasil, tetapi setiap baris hanya memiliki satu nilai untuk ekspresi. Misalnya, dalam pernyataan berikut SELECT , referensi ke ProductID dan istilah 1+2 dalam daftar pilih adalah ekspresi:

USE AdventureWorks2012;  
GO  
SELECT ProductID, 1+2  
FROM Production.Product;  
GO  

Ekspresi 1+2 mengevaluasi ke 3 di setiap baris dalam tataan hasil. Meskipun ekspresi ProductID menghasilkan nilai unik di setiap baris tataan hasil, setiap baris hanya memiliki satu nilai untuk ProductID.

  • Azure Synapse Analytics mengalokasikan jumlah memori maksimum tetap untuk setiap utas sehingga tidak ada utas yang dapat menggunakan semua memori. Beberapa memori ini digunakan untuk menyimpan ekspresi kueri. Jika kueri memiliki terlalu banyak ekspresi dan memori yang diperlukan melebihi batas internal, mesin tidak akan menjalankannya. Untuk menghindari masalah ini, pengguna dapat mengubah kueri menjadi beberapa kueri dengan jumlah ekspresi yang lebih kecil di masing-masing kueri. Misalnya, Anda memiliki kueri dengan daftar panjang ekspresi dalam klausa WHERE:
DELETE FROM dbo.MyTable 
WHERE
(c1 = '0000001' AND c2 = 'A000001') or
(c1 = '0000002' AND c2 = 'A000002') or
(c1 = '0000003' AND c2 = 'A000003') 
/* ... additional, similar expressions omitted for simplicity */

Ubah kueri ini menjadi:

DELETE FROM dbo.MyTable WHERE (c1 = '0000001' AND c2 = 'A000001');
DELETE FROM dbo.MyTable WHERE (c1 = '0000002' AND c2 = 'A000002');
DELETE FROM dbo.MyTable WHERE (c1 = '0000003' AND c2 = 'A000003');
/* ... refactored, individual DELETE statements omitted for simplicity  */

Lihat juga

ZONA WAKTU (Transact-SQL)
CASE (Transact-SQL)
CAST dan CONVERT (Transact-SQL)
COALESCE (Transact-SQL)
Konversi Tipe Data (Mesin Database)
Prioritas Tipe Data (Transact-SQL)
Tipe Data (Transact-SQL)
Fungsi Bawaan (Transact-SQL)
LIKE (Transact-SQL)
NULLIF (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)