Fundamental SQL: Menggunakan Fungsi Skalar Numerik dan Fungsi Skalar Teks

Fikar Rizki
7 min readAug 17, 2023

--

SQL Course — Earn & Excel (earnandexcel.com)

Dalam SQL (Structured Query Language), fungsi adalah perintah yang digunakan untuk melakukan operasi terhadap data dalam database. Fungsi ini membantu untuk memanipulasi, mengambil, atau mengubah data yang disimpan dalam tabel. Dua jenis fungsi yang sering digunakan dalam SQL adalah fungsi skalar numerik dan fungsi skalar teks.

Fungsi skalar numerik memungkinkan kita untuk melakukan manipulasi matematika pada nilai-nilai numerik dalam basis data. Dengan menggunakan fungsi ini, kita dapat melakukan operasi perhitungan seperti penghitungan absolut, pembulatan, penghitungan akar kuadrat, dan banyak lagi. Selain itu, fungsi skalar numerik juga berguna dalam mengubah format dan mengatur tampilan dari nilai-nilai numerik, sesuai dengan kebutuhan analisis data.

Sementara itu, fungsi skalar teks merupakan alat penting dalam manipulasi teks atau data tipe string dalam SQL. Fungsi-fungsi ini memungkinkan kita untuk mengubah huruf besar-kecil, menggabungkan atau memecah string, dan melakukan pencarian dan penggantian pola tertentu dalam teks. Dengan adanya fungsi skalar teks, kita dapat merapikan dan memanipulasi data teks secara efisien.

Fungsi Skalar Numerik

ABS(): Fungsi ini mengembalikan nilai absolut (positif) dari suatu angka. Ini berarti bahwa jika angka tersebut negatif, maka tanda negatif akan dihapus. Contoh:

SELECT StudentID, FirstName, LastName, Semester1, Semester2, ABS(MarkGrowth) AS MarkGrowth
FROM students

Output:

+-----------+-----------+----------+-----------+-----------+------------+
| StudentID | FirstName | LastName | Semester1 | Semester2 | MarkGrowth |
+-----------+-----------+----------+-----------+-----------+------------+
| 1 | Jose | Mohit | 64.55 | 72.6 | 8.05 |
| 2 | Lala | Karlina | 72.85 | 65.35 | 7.5 |
| 3 | Sultan | Hadi | 45.32 | 50.25 | 4.93 |
| 4 | Jaya | Usman | 86.73 | 77.4 | 9.33 |
| 5 | Anjali | Wijaya | 92.25 | 90.75 | 1.5 |
+-----------+-----------+----------+-----------+-----------+------------+

ROUND(): Fungsi ini digunakan untuk membulatkan suatu angka menjadi angka bulat terdekat. Anda juga dapat memberikan argumen opsional untuk menentukan jumlah desimal yang ingin dihasilkan. Contoh:

SELECT StudentID, FirstName, LastName, ROUND(Semester1,1) AS Semester1, ROUND(Semester2,0) AS Semester2, MarkGrowth
FROM students

Output:

+-----------+-----------+----------+-----------+-----------+------------+
| StudentID | FirstName | LastName | Semester1 | Semester2 | MarkGrowth |
+-----------+-----------+----------+-----------+-----------+------------+
| 1 | Jose | Mohit | 64.6 | 73 | -8.05 |
| 2 | Lala | Karlina | 72.8 | 65 | 7.5 |
| 3 | Sultan | Hadi | 45.3 | 50 | -4.93 |
| 4 | Jaya | Usman | 86.7 | 77 | 9.33 |
| 5 | Anjali | Wijaya | 92.2 | 91 | 1.5 |
+-----------+-----------+----------+-----------+-----------+------------+

CEILING(): Membulatkan sebuah bilangan ke atas ke bilangan bulat terdekat. Contoh:

SELECT StudentID, FirstName, LastName, CEILING(Semester1) AS Semester1, CEILING(Semester2) AS Semester2, MarkGrowth
FROM students

Output:

+-----------+-----------+----------+-----------+-----------+------------+
| StudentID | FirstName | LastName | Semester1 | Semester2 | MarkGrowth |
+-----------+-----------+----------+-----------+-----------+------------+
| 1 | Jose | Mohit | 65 | 73 | -8.05 |
| 2 | Lala | Karlina | 73 | 66 | 7.5 |
| 3 | Sultan | Hadi | 46 | 51 | -4.93 |
| 4 | Jaya | Usman | 87 | 78 | 9.33 |
| 5 | Anjali | Wijaya | 93 | 91 | 1.5 |
+-----------+-----------+----------+-----------+-----------+------------+

FLOOR(): Membulatkan sebuah bilangan ke bawah ke bilangan bulat terdekat. Contoh:

SELECT StudentID, FirstName, LastName, FLOOR(Semester1) as Semester1, FLOOR(Semester2) as Semester2, MarkGrowth 
FROM students

Output:

+-----------+-----------+----------+-----------+-----------+------------+
| StudentID | FirstName | LastName | Semester1 | Semester2 | MarkGrowth |
+-----------+-----------+----------+-----------+-----------+------------+
| 1 | Jose | Mohit | 64 | 72 | -8.05 |
| 2 | Lala | Karlina | 72 | 65 | 7.5 |
| 3 | Sultan | Hadi | 45 | 50 | -4.93 |
| 4 | Jaya | Usman | 86 | 77 | 9.33 |
| 5 | Anjali | Wijaya | 92 | 90 | 1.5 |
+-----------+-----------+----------+-----------+-----------+------------+

SQRT(): Menghitung hasil akar dari bilangan.

SELECT StudentID, FirstName, LastName, SQRT(Semester1) AS Semester1, Semester2, MarkGrowth
FROM students

Output:

+-----------+-----------+----------+-------------------+-----------+------------+
| StudentID | FirstName | LastName | Semester1 | Semester2 | MarkGrowth |
+-----------+-----------+----------+-------------------+-----------+------------+
| 1 | Jose | Mohit | 8.034301463101817 | 72.6 | -8.05 |
| 2 | Lala | Karlina | 8.535221145348256 | 65.35 | 7.5 |
| 3 | Sultan | Hadi | 6.732013071882734 | 50.25 | -4.93 |
| 4 | Jaya | Usman | 9.31289428695505 | 77.4 | 9.33 |
| 5 | Anjali | Wijaya | 9.604686356149273 | 90.75 | 1.5 |
+-----------+-----------+----------+-------------------+-----------+------------+

MOD() (atau %): Fungsi ini menghitung sisa pembagian dari suatu angka oleh angka lain. Contoh:

SELECT StudentID, FirstName, LastName, MOD(Semester1,2) AS Semester1, Semester2
FROM students

Output:

+-----------+-----------+----------+--------------------+-----------+
| StudentID | FirstName | LastName | Semester1 | Semester2 |
+-----------+-----------+----------+--------------------+-----------+
| 1 | Jose | Mohit | 0.5499999999999972 | 72.6 |
| 2 | Lala | Karlina | 0.8499999999999943 | 65.35 |
| 3 | Sultan | Hadi | 1.3200000000000003 | 50.25 |
| 4 | Jaya | Usman | 0.730000000000004 | 77.4 |
| 5 | Anjali | Wijaya | 0.25 | 90.75 |
+-----------+-----------+----------+--------------------+-----------+

EXP(): Fungsi ini menghitung e (bilangan Euler) dipangkatkan dengan suatu angka. Contoh:

SELECT StudentID, FirstName, LastName, MOD(Semester1,2) AS Semester1, Semester2, EXP(MarkGrowth)
FROM students

Output:

+-----------+-----------+----------+--------------------+-----------+------------------------+
| StudentID | FirstName | LastName | Semester1 | Semester2 | EXP(MarkGrowth) |
+-----------+-----------+----------+--------------------+-----------+------------------------+
| 1 | Jose | Mohit | 0.5499999999999972 | 72.6 | 0.00031910192248120326 |
| 2 | Lala | Karlina | 0.8499999999999943 | 65.35 | 1808.0424144560632 |
| 3 | Sultan | Hadi | 1.3200000000000003 | 50.25 | 0.0072265032813764625 |
| 4 | Jaya | Usman | 0.730000000000004 | 77.4 | 11271.131485524471 |
| 5 | Anjali | Wijaya | 0.25 | 90.75 | 4.4816890703380645 |
+-----------+-----------+----------+--------------------+-----------+------------------------+

Fungsi Skalar Teks

CONCAT(): Fungsi ini menggabungkan (concatenate) dua atau lebih string menjadi satu string. Contoh:

SELECT StudentID, CONCAT(FirstName, LastName) as Name, Semester1, Semester2, MarkGrowth
FROM students

Output:

+-----------+--------------+-----------+-----------+------------+
| StudentID | Name | Semester1 | Semester2 | MarkGrowth |
+-----------+--------------+-----------+-----------+------------+
| 1 | JoseMohit | 64.55 | 72.6 | -8.05 |
| 2 | LalaKarlina | 72.85 | 65.35 | 7.5 |
| 3 | SultanHadi | 45.32 | 50.25 | -4.93 |
| 4 | JayaUsman | 86.73 | 77.4 | 9.33 |
| 5 | AnjaliWijaya | 92.25 | 90.75 | 1.5 |
+-----------+--------------+-----------+-----------+------------+

SUBSTRING_INDEX( ): digunakan untuk memperoleh sebagian dari suatu string berdasarkan jumlah kemunculan suatu delimiter (pemisah) dari awal atau akhir string. Fungsi ini berguna untuk memecah string menjadi bagian-bagian yang lebih kecil berdasarkan delimiter tertentu. Sintaks umum dari SUBSTRING_INDEX() adalah sebagai berikut:

SUBSTRING_INDEX(string, delimiter, count)
  • string: String asal yang akan dipecah.
  • delimiter: Delimiter atau pemisah yang digunakan untuk membagi string.
  • count: Jumlah kemunculan delimiter yang ingin dihitung. Jika positif, pemisahan dilakukan dari awal string. Jika negatif, pemisahan dilakukan dari akhir string.

Contoh:

SELECT StudentID, SUBSTRING_INDEX(Email,'@',1) as Name
FROM students

Output:

+-----------+---------------+
| StudentID | Name |
+-----------+---------------+
| 1 | Jose_Mohit |
| 2 | lala_karlina |
| 3 | Sultan_Hadi |
| 4 | jaya_usman |
| 5 | anjali_wijaya |
+-----------+---------------+

SUBSTR() atau SUBSTRING(): digunakan untuk mengambil sebagian dari suatu string, dimulai dari posisi tertentu. Sintaks umum dari SUBSTR() adalah sebagai berikut:

SUBSTR(string, start, length)
  • string: String asal yang akan dipotong.
  • start: Posisi awal dalam string dari mana potongan akan dimulai. Posisi dimulai dari 1 untuk karakter pertama.
  • length: (Opsional) Jumlah karakter yang akan diambil dari posisi awal. Jika tidak ditentukan, maka SUBSTR() akan mengambil semua karakter dari posisi awal hingga akhir string.

Contoh:

SELECT StudentID, SUBSTR(FirstName, 2, 3) as Initial
From Students

Output:

+-----------+---------+
| StudentID | Initial |
+-----------+---------+
| 1 | ose |
| 2 | ala |
| 3 | ult |
| 4 | aya |
| 5 | nja |
+-----------+---------+

LENGTH() (atau LEN()): Fungsi ini mengembalikan panjang (jumlah karakter) dari sebuah string. Contoh:

SELECT StudentID, FirstName, LENGTH(FirstName) as Total_Char FROM students;

Output:

+-----------+-----------+------------+
| StudentID | FirstName | Total_Char |
+-----------+-----------+------------+
| 1 | Jose | 4 |
| 2 | Lala | 4 |
| 3 | Sultan | 6 |
| 4 | Jaya | 4 |
| 5 | Anjali | 6 |
+-----------+-----------+------------+

REPLACE( ): digunakan untuk menggantikan semua kemunculan suatu substring dengan substring lain dalam sebuah string. Fungsi ini sangat bermanfaat untuk melakukan penggantian teks dalam data dan manipulasi string. Sintaks dari REPLACE() adalah sebagai berikut:

REPLACE(string, old_substring, new_substring)
  • string: String asal yang ingin Anda lakukan penggantian.
  • old_substring: Substring yang ingin digantikan.
  • new_substring: Substring baru yang akan menggantikan setiap kemunculan old_substring.

Contoh:

SELECT StudentID, Email, REPLACE(Email, 'yahoo', 'gmail') as New_Email
FROM students

Output:

+-----------+-------------------------+-------------------------+
| StudentID | Email | New_Email |
+-----------+-------------------------+-------------------------+
| 1 | Jose_Mohit@gmail.com | Jose_Mohit@gmail.com |
| 2 | lala_karlina@yahoo.com | lala_karlina@gmail.com |
| 3 | Sultan_Hadi@gmail.com | Sultan_Hadi@gmail.com |
| 4 | jaya_usman@yahoo.com | jaya_usman@gmail.com |
| 5 | anjali_wijaya@yahoo.com | anjali_wijaya@gmail.com |
+-----------+-------------------------+-------------------------+

UPPER( ): digunakan untuk mengonversi semua karakter dalam sebuah string menjadi huruf kapital (uppercase).

LOWER( ): digunakan untuk mengonversi semua karakter dalam sebuah string menjadi huruf kecil (lowercase). Fungsi ini membantu dalam membuat teks menjadi lebih konsisten dalam hal penulisan huruf kecil.

Contoh penggunaan UPPER( ) dan LOWER( ):

SELECT StudentID, UPPER(FirstName) FirstName, LOWER(LastName) LastName
FROM students

Output:

+-----------+-----------+----------+
| StudentID | FirstName | LastName |
+-----------+-----------+----------+
| 1 | JOSE | mohit |
| 2 | LALA | karlina |
| 3 | SULTAN | hadi |
| 4 | JAYA | usman |
| 5 | ANJALI | wijaya |
+-----------+-----------+----------+

Itulah beberapa fungsi skalar numerik dan skalar teks pada SQL. Sampai jumpa pada story lainnya!

--

--

Fikar Rizki
Fikar Rizki

No responses yet