Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Operator SEPERTI SQL untuk Pemula

Dalam SQL, LIKE operator memungkinkan Anda untuk melakukan pencocokan pola. Ini menentukan apakah string karakter tertentu cocok dengan pola tertentu.

Sebuah pola dapat menyertakan karakter reguler dan karakter wildcard.

Tabel Sumber

Tabel berikut digunakan untuk contoh di halaman ini.

SELECT * FROM Owners;

Hasil:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 3         | Nancy       | Simpson    | (489) 591-0408 | NULL              |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Contoh

Berikut adalah contoh untuk mendemonstrasikan bagaimana LIKE operator bekerja.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '%.com';

Hasil:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | [email protected] |
| Bart        | Pitt       | [email protected]  |
| Woody       | Eastwood   | [email protected] |
+-------------+------------+-------------------+

Dalam contoh ini, saya menggunakan LIKE operator bersama dengan % operator wildcard untuk mengembalikan pemilik yang alamat emailnya diakhiri dengan .com .

LIKE dapat digunakan dengan operator string lain juga, seperti _ , [] , dan [^] .

% Operator Wildcard

% operator wildcard cocok dengan string apa pun dari nol atau lebih karakter. Ini dapat digunakan sebagai awalan atau akhiran, dan juga dapat digunakan di tengah string.

Ini cenderung lebih umum digunakan sebagai sufiks, dan penggunaannya terbatas di tengah pola, meskipun ada beberapa kasus penggunaan yang valid untuk menggunakannya di tengah pola, seperti berikut:

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '[email protected]%.com';

Hasil:

+-------------+------------+------------------+
| FirstName   | LastName   | Email            |
|-------------+------------+------------------|
| Bart        | Pitt       | [email protected] |
+-------------+------------+------------------+

Dalam hal ini, kami tidak tahu alamat email bart, tetapi kami tahu itu dimulai dengan [email protected] dan diakhiri dengan .com . Oleh karena itu, kami dapat menggunakan LIKE dalam hubungannya dengan % operator wildcard untuk mengisi sisanya.

Ingatlah bahwa teknik ini dapat mengembalikan banyak baris yang tidak relevan, bergantung pada data, dan cara Anda menyusun pernyataan SQL.

_ Operator Wildcard

Garis bawah (_ ) operator wildcard cocok dengan satu karakter apa pun.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE FirstName LIKE 'b_rt';

Hasil:

+-------------+------------+------------------+
| FirstName   | LastName   | Email            |
|-------------+------------+------------------|
| Bart        | Pitt       | [email protected] |
| Burt        | Tyson      | [email protected] |
+-------------+------------+------------------+

[] Operator Wildcard

Tanda kurung ([] ) operator wildcard cocok dengan karakter tunggal apa pun dalam rentang atau set tertentu yang ditentukan di antara tanda kurung.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE FirstName LIKE '[bh]%';

Hasil:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | [email protected] |
| Bart        | Pitt       | [email protected]  |
| Boris       | Trump      | NULL              |
| Burt        | Tyson      | [email protected]  |
+-------------+------------+-------------------+

Di sini, saya menggabungkan wildcard tanda kurung dengan tanda persentase untuk mengembalikan semua pemilik yang nama depannya dimulai dengan b atau h .

Perhatikan bahwa operator kurung tidak memiliki adopsi luas di DBMS. Ini didukung di SQL Server, tetapi tidak didukung di MySQL, Oracle, DB2, dan SQLite. Periksa dokumentasi DBMS Anda untuk melihat apakah itu mendukung operator ini.

[^] Operator Wildcard

Karakter tanda sisipan (^ ) dapat digunakan untuk meniadakan hasil saat menggunakan operator tanda kurung.

Jadi, kami mengubah contoh sebelumnya untuk hanya mengembalikan pemilik yang nama depannya tidak mulai dengan b atau h .

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE FirstName LIKE '[^bh]%';

Hasil:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Nancy       | Simpson    | NULL              |
| Woody       | Eastwood   | [email protected] |
+-------------+------------+-------------------+

Nilai NULL

Persentase (% ) wildcard cocok dengan apa pun – hampir. Satu hal yang tidak cocok adalah NULL .

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '%';

Hasil:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | [email protected] |
| Bart        | Pitt       | [email protected]  |
| Woody       | Eastwood   | [email protected] |
| Burt        | Tyson      | [email protected]  |
+-------------+------------+-------------------+

Di tabel kami, ada dua baris dengan NULL di Email kolom, tetapi itu tidak dikembalikan di sini.

Kinerja

Kueri yang berisi LIKE operator dapat berjalan jauh lebih lambat daripada kueri lainnya, dan Anda mungkin harus menghindari penggunaan LIKE operator kecuali Anda benar-benar membutuhkannya. Menggunakan % operator sebagai awalan bisa sangat lambat.

Itu tidak berarti Anda tidak boleh menggunakannya sama sekali. LIKE operator adalah bagian integral dari SQL, dan Anda akan menemukan banyak skenario di mana itu akan menjadi satu-satunya pilihan (atau setidaknya, pilihan terbaik).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ketik dengan Kuat Parameter Bernilai Tabel itu

  2. Pelajari Cara Menangani Pengecualian Di PL/SQL

  3. Menganalisis kematian dengan seribu pemotongan beban kerja

  4. Masalah dengan Fungsi dan Tampilan Jendela

  5. Tingkat Kompatibilitas dan Estimasi Kardinalitas Primer