MySQL - Operator NOT REGEXP

Pendahuluan terhadap NOT REGEXP

Hai, para penggemar basis data yang ambisius! Hari ini, kita akan mendalam ke dunia yang menarik dari operator NOT REGEXP MySQL. Sebagai guru komputer tetangga yang ramah, saya disini untuk mengarahkan Anda melalui topik ini dengan kegembiraan yang saya rasakan saat pertama kali belajar tentangnya. Percayalah, pada akhir pelajaran ini, Anda akan menjalankan alat kuat ini seperti seorang ahli basis data!

MySQL - NOT REGEXP Operator

Apa itu NOT REGEXP?

Sebelum kita masuk ke rincian, mari kita pahami apa arti sebenarnya NOT REGEXP. Dalam kata-kata sederhana, NOT REGEXP seperti seorang pengawas di klub eksklusif, tapi bukan untuk memasukkan orang, melainkan menjaga pola tertentu keluar dari hasil pencarian kita.

REGEXP berarti Regular Expression, yang adalah urutan karakter yang membentuk pola pencarian. Ketika kita menambahkan NOT sebelumnya, kita secara esensial mengatakan, "Hai MySQL, tunjukkan saya semua yang tidak cocok dengan pola ini!"

Operator NOT REGEXP MySQL dalam Aksi

Ayo kerjakan tangan dan lihat bagaimana ini bekerja dalam praktek. Bayangkan kita memiliki tabel yang disebut book_club dengan kolom book_title. Kita ingin menemukan semua buku yang tidak memiliki kata "mystery" dalam judulnya.

SELECT book_title
FROM book_club
WHERE book_title NOT REGEXP 'mystery';

Dalam contoh ini, MySQL akan mengembalikan semua judul buku yang tidak mengandung kata "mystery". Itu seperti meminta petugas perpustakaan untuk semua buku yang bukan misteri - sungguh bagus, kan?

Kesensitifan Huruf

Ada hal penting yang harus dicatat bahwa secara default, REGEXP (dan NOT REGEXP) adalah case-insensitive. Jadi 'mystery', 'Mystery', dan bahkan 'mYsTeRy' semua akan dikecualikan dalam contoh sebelumnya. Jika Anda ingin membuatnya case-sensitive, Anda dapat menggunakan kata kunci BINARY:

SELECT book_title
FROM book_club
WHERE book_title NOT REGEXP BINARY 'mystery';

Sekarang, hanya 'mystery' (semua huruf kecil) yang akan dikecualikan, tetapi 'Mystery' atau 'MYSTERY' masih akan muncul dalam hasil kita.

Pola NOT REGEXP Tingkat Lanjut

Ayo tingkatkan dan lihat beberapa pola yang lebih kompleks. Ingat, NOT REGEXP sangat fleksibel!

Mengkecualikan Beberapa Kata

Apa bila kita ingin mengkecualikan buku dengan kata "mystery" atau "thriller" dalam judulnya?

SELECT book_title
FROM book_club
WHERE book_title NOT REGEXP 'mystery|thriller';

Simbol | berperan seperti operator "atau". Query ini akan mengembalikan semua buku yang tidak memiliki kata "mystery" atau "thriller" dalam judulnya.

Mengkecualikan Kata di Awal atau Akhir

Mungkin kita ingin menemukan buku yang tidak dimulai dengan "The":

SELECT book_title
FROM book_club
WHERE book_title NOT REGEXP '^The';

Simbol ^ menempelkan pola ke awal string. Demikian pula, jika kita ingin buku yang tidak berakhir dengan "Chronicles", kita dapat menggunakan:

SELECT book_title
FROM book_club
WHERE book_title NOT REGEXP 'Chronicles$';

Simbol $ menempelkan pola ke akhir string.

Operator NOT REGEXP dalam Program Klien

Sekarang, mari lihat bagaimana kita dapat menggunakan NOT REGEXP dalam program klien. Saya akan menggunakan Python dengan MySQL Connector library sebagai contoh, tapi konsepnya sama di bahasa lainnya.

import mysql.connector

# Buat koneksi
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="book_club_db"
)

mycursor = mydb.cursor()

# Jalankan query NOT REGEXP
mycursor.execute("SELECT book_title FROM book_club WHERE book_title NOT REGEXP 'fantasy|sci-fi'")

# Ambil dan cetak hasil
for x in mycursor:
print(x)

Skrip ini membuat koneksi ke basis data kita, menjalankan query untuk menemukan semua buku yang tidak memiliki "fantasy" atau "sci-fi" dalam judulnya, dan kemudian mencetak hasilnya.

Pola NOT REGEXP Umum

Mari lihat beberapa pola umum yang Anda mungkin temukan berguna:

Pattern Deskripsi Contoh
[^...] Cocok dengan semua karakter yang tidak dalam kurung '[^aeiou]' cocok dengan semua non-vowel
.* Cocok dengan semua urutan karakter 'not.*end' cocok dengan string yang memiliki "not" dan "end" dengan apa pun di antaranya
\d Cocok dengan semua digit '\d' cocok dengan semua digit tunggal
\D Cocok dengan semua non-digit '\D' cocok dengan semua karakter non-digit tunggal
\s Cocok dengan semua karakter whitespace '\s' cocok dengan spasi, tab, baris baru
\S Cocok dengan semua karakter non-whitespace '\S' cocok dengan semua karakter yang bukan spasi, tab, atau baris baru

Kesimpulan

Dan begitu, para ahli basis data masa depan! Kita telah mengexploreasi operator NOT REGEXP, dari penggunaannya yang dasar hingga pola yang lebih tingkat lanjut. Ingat, seperti semua alat kuat, itu memerlukan latihan untuk dikuasai. Jangan khawatir untuk mencoba pola yang berbeda dan lihat apa hasilnya.

Dalam tahun-tahun mengajar saya, saya telah melihat murid-murid yang mulai bingung dengan NOT REGEXP dan kemudian menggunakannya tanpa masalah dalam query yang kompleks. Anda sedang berada di jalur untuk bergabung dengan mereka!

Sebelum saya meninggalkan, ini sedikit humor basis data untuk Anda: Mengapa pengembang keluar dari pekerjaannya? Dia tidak dapat TABLE diskusi tentang gajinya! (Mengerti? TABLE? Baiklah, saya akan pergi sendiri...)

Tetap berlatih, tetap kurios, dan selamat mengekueri!

Credits: Image by storyset