MySQL - NOT REGEXP Operator

Pendahuluan kepada NOT REGEXP

Hai, para entusiast basis data yang bersemangat! Hari ini, kita akan melihat dunia yang menarik MySQL NOT REGEXP operator. 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 detilnya, mari kita mengerti apa arti NOT REGEXP secara sederhana. Dalam kata-kata sederhana, NOT REGEXP seperti seorang pengawas di klub eksklusif, tetapi instead of membolehkan orang masuk, dia menjaga pola tertentu keluar dari hasil pencarian kita.

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

MySQL NOT REGEXP Operator dalam Aksi

Marilah kita 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 pustakawan Anda untuk semua buku yang bukan misteri - lumayan menarik, kan?

Kesensitifan Huruf

Satu hal yang penting untuk dicatat adalah bahwa secara default, REGEXP (dan NOT REGEXP) adalah case-insensitive. Jadi 'mystery', 'Mystery', dan bahkan 'mYsTeRy' 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 Lanjutan

Marilah kita tingkatkan dan lihat beberapa pola yang lebih kompleks. Ingat, NOT REGEXP sangat multifungsi!

Mengkecualikan Banyak Kata

Apa jika kita ingin mengkecualikan buku dengan baik "mystery" atau "thriller" di 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 "mystery" atau "thriller" di 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. Secara similar, 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.

NOT REGEXP Operator Menggunakan Program Klien

Sekarang, mari kita lihat bagaimana kita dapat menggunakan NOT REGEXP dalam program klien. Saya akan menggunakan Python dengan MySQL Connector library sebagai contoh, tetapi konsep ini hampir sama dalam bahasa lainnya.

import mysql.connector

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

mycursor = mydb.cursor()

# Eksekusi 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" di judulnya, dan kemudian mencetak hasilnya.

Pola NOT REGEXP Umum

Marilah kita lihat beberapa pola yang umum Anda mungkin temui:

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

Kesimpulan

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

Dalam tahun-tahun mengajar saya, saya telah melihat murid-murid yang mulai bingung tentang NOT REGEXP hingga menggunakan itu dengan mudah dalam query yang kompleks. Anda sedang dalam jalur untuk bergabung dengan mereka!

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

Tetap latih, tetap bersemangat, dan selamat mengeksekusi query!

Credits: Image by storyset