Function merupakan salah satu fitur yang handal dalam SQL. Mereka dapat melakukan:
- Perhitungan data
- Modifikasi data
- Memanipulasi output
- Memformat tanggal dan numerik untuk ditampilkan
- Mengkonversi tipe data
Single-row functions beroperasi hanya pada sebuah baris dan mengembalikan satu nilai per baris. Ada beberapa tipe single-row functions pada SQL Server. Pada tulisan ini dibahas tipe-tipe berikut:
- String, menerima argumen berupa karakter (atau string) dan dapat mengembalikan nilai berupa karakter atau numerik.
- LOWER() digunakan untuk mengubah karakter menjadi huruf kecil. Sedangkan UPPER() sebaliknya, mengubah karakter menjadi huruf besar.
Contoh pemakaian LOWER() dan UPPER():SELECT ContactID, Title, UPPER(FirstName)
FROM Person.Contact
WHERE LOWER(FirstName) = ‘kim’; - Character manipulation function
- LEFT() mengambil beberapa karakter dimulai dari sebelah kiri string. Ada 2 argumen yaitu (1) string ekspresi, dan (2) panjang karakter yang diambil. Mengembalikan nilai berupa string.
- RIGHT() mengambil beberapa karakter dimulai dari sebelah kanan string. Ada 2 argumen yaitu (1) string ekspresi, dan (2) panjang karakter yang diambil. Mengembalikan nilai berupa string.
- SUBSTRING() mengambil beberapa karakter ditengah-tengah string. Ada 3 argumen yaitu (1) string ekspresi, (2) posisi awal (dimulai dari posisi ke-1), dan (3) panjang karakter yang diambil. Mengembalikan nilai berupa string.
- LEN() menghitung panjang string. Ada 1 argumen yaitu (1) string ekspresi. Mengembalikan nilai berupa numerik.
Contoh pemakaian character manipulation function:
SELECT LastName, LEFT(LastName, 2) [LEFT],
RIGHT(LastName,2) [RIGHT],
SUBSTRING(LastName,2,3) [SUBSTR], LEN(LastName) [LEN]
FROM Person.Contact
WHERE LastName LIKE ‘Ac%’; - Mathematical, menerima argumen berupa karakter (atau string) dan dapat mengembalikan nilai berupa karakter atau numerik.
- Round function
- CEILING(). Pembulatan nilai keatas. Ada 1 argumen yaitu (1) ekspresi numerik. Mengembalikan nilai berupa numerik.
- FLOOR(). Pembulatan nilai kebawah. Ada 1 argumen yaitu (1) ekspresi numerik. Mengembalikan nilai berupa numerik.
- ROUND(). Pembulatan nilai sesuai dengan presisi yang diberikan. Ada 2 argumen yaitu (1) ekspresi numerik, dan (2) presisi. Mengembalikan nilai berupa numerik.
Contoh pemakaian round function:
SELECT CEILING(50.6) [CEILING], FLOOR(50.6) [FLOOR],
ROUND(50.6, 0) [ROUND]; - POWER() digunakan untuk pemangkatan. POWER() membutuhkan 2 argumen yaitu (1) nilai numerik yang akan dipangkatkan, dan (2) nilai pangkatnya. Sedangkan SQRT() adalah akar pangkat dua dari nilai argumen yang diberikan.
Contoh pemakaian POWER() dan SQRT():SELECT POWER(2,3) [POWER], SQRT(16) [SQRT];
- Date and Time, SQL Server menyimpan tanggal kedalam format numerik antara lain: year, quarter, month, day, week, hour, minute, second, milisecond. Date and time function ini mengolah argumen berupa date and time dan mengembalikan nilai dalam bentuk string, numerik, dan date and time.
- GETDATE() mengembalikan date and time dari sistem (komputer) dalam format standar SQL Server. Format standar SQL Server untuk date and time adalah YYYY-MM-DD HH24:MI:SS.MS
- Function untuk mengambil bagian dari DATE and TIME. Dengan adanya function ini, kita bisa melakukan seleksi data untuk waktu/saat tertentu, dengan tingkat presisi yang tinggi. Beberapa function ini antara lain:
- DATEPART(). Mengembalikan nilai numerik yang merepresentasikan bagian tanggal yang diambil. Ada 2 argumen, yaitu (1) bagian tanggal yang diambil, dan (2) tanggal. Bagian yang bisa diambil antara lain tahun (yyyy/yy), bulan (mm,m), hari (dd/d), hari dalam tahun (dy), minggu (ww), hari dalam minggu (dw), jam (hh), menit (mi), detik (ss), mili detik (ms).
- DAY() mengembalikan nilai numerik yang merepresentasikan bagian tanggal yaitu hari. Ada 1 argumen, yaitu (1) tanggal.
- MONTH() mengembalikan nilai numerik yang merepresentasikan bagian tanggal yaitu bulan. Ada 1 argumen, yaitu (1) tanggal.
- YEAR() mengembalikan nilai numerik yang merepresentasikan bagian tanggal yaitu tahun. Ada 1 argumen, yaitu (1) tanggal.
- DATEADD() mengembalikan tanggal baru berdasarkan penambahan interval pada bagian tanggal tertentu. Ada 3 argumen yaitu (1) bagian tanggal, (2) nilai penambahan, dan (3) tanggal yang akan ditambahkan. Sedangkan DATEDIFF() mengembalikan selisih waktu (bagian tanggal) antar dua tanggal. Ada 3 argumen yaitu (1) bagian tanggal (bisa dilihat pada tabel 10), (2) tanggal pertama yang akan dikurangi, dan (3) tanggal kedua sebagai pengurang.
Contoh pemakaian DATE and TIME:SELECT GETDATE() Tanggal,
DATEADD(mm, 2, GETDATE()) [DATEADD],
DATEDIFF(mm, GETDATE(), GETDATE()) [DATEDIFF]; - Others
- CAST() dan CONVERT(). Function ini digunakan untuk mengubah dari satu tipe data ke tipe data yang lain ketika nilai tersebut ditampilkan. Sehingga, tentu saja nilai balikan dari function ini disesuaikan dengan tipe data perubahannya.
CAST() membutuhkan 2 argumen yaitu (1) nilai yang akan diubah, dan (2) tipe data pengubah. Sedangkan CONVERT() membutuhkan 3 parameter yaitu (1) tipe data pengubah, (2) nilai yang akan diubah, (3) style pengubah.
Contoh pemakaian CAST() and CONVERT():SELECT CAST(12 AS CHAR(2)) [CAST],
CAST(12 AS CHAR(2)) + ‘ bulan’ [Cop],
CONVERT(CHAR, 12) [CONVERT]; - ISNULL(). Function ini menggantikan nilai NULL dengan nilai lain. Ada 2 argumen yaitu (1) kolom/ekspresi, dan (2) nilai pengganti. Nilai pengganti merupakan nilai yang dikembalikan, yang mempunyai tipe data yang sama dengan argumen pertama.
- NULLIF(). Function ini membandingkan 2 buah ekspresi. Jika keduanya sama, maka function ini mengembalikan nilai NULL. Jika tidak sama, maka function ini mengembalikan ekspresi pertama.
- COALESCE(). Function ini mengembalikan ekspresi NOT NULL pertama dalam daftar argumennya. Function ini sebenarnya sama seperti CASE dalam conditional expression.
- Conditional Expression
Ekpresi kondisi ini sama seperti logika IF-THEN-ELSE dalam dunia pemrograman. Dalam SQL Server, ekspresi kondisi direpresentasikan oleh penggunaan CASE.
CASE <kolom/ekpresi>
WHEN <nilai pembanding1> THEN <nilai kembali1>
WHEN <nilai pembanding2> THEN <nilai kembali2>
WHEN <nilai pembanding n> THEN <nilai kembali n>
ELSE <nilai kembali else>SQL Server akan melihat apakah ekspresi yang diberikan sama dengan <nilai pembanding 1>, jika ya maka CASE mengembalikan <nilai kembali 1>. Jika tidak maka dilakukan pengecekan apakah sama dengan <nilai pembanding 2>, jika ya maka CASE mengembalikan <nilai kembali 2>. Begitu seterusnya sampai dengan <nilai pembanding n>. Jika dari semua nilai pembanding tidak sama, maka CASE akan mengembalikan <nilai kembali else>.
Contoh pemakaian CASE:SELECT EmployeeID, CASE MaritalStatus
WHEN ‘M’ THEN ‘Married’ WHEN ‘S’ THEN ‘Single’
END [Status Nikah]
FROM HumanResources.Employee;
Semoga bermanfaat…