Tutorial Wildcards MySQL: Suka, TIDAK Suka, Melarikan diri, (%), (_)

Isi kandungan:

Anonim

Apakah Kad Liar MySQL?

MySQL Wildcards adalah watak yang membantu mencari data yang sesuai dengan kriteria kompleks. Wildcard digunakan bersama dengan operator perbandingan LIKE atau dengan operator perbandingan TIDAK SUKA.

Mengapa menggunakan WildCard?

Sekiranya anda biasa menggunakan SQL, anda mungkin berfikir bahawa anda boleh mencari data kompleks dengan menggunakan klausa SELECT dan WHERE. Lalu mengapa menggunakan Wildcard?

Sebelum kita menjawab soalan itu, mari kita lihat contohnya. Andaikan bahawa bahagian pemasaran perpustakaan video Myflix menjalankan promosi pemasaran di bandar Texas dan ingin mendapatkan maklum balas mengenai jumlah ahli

yang didaftarkan dari Texas, anda boleh menggunakan pernyataan SELECT berikut bersama klausa WHERE untuk mendapatkan maklumat yang diinginkan.

SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';

Seperti yang anda lihat dari pertanyaan di atas, "klausa DI MANA" menjadi rumit. Namun, dengan menggunakan kad liar, permudahkan pertanyaan kerana kita boleh menggunakan sesuatu yang mudah seperti skrip yang ditunjukkan di bawah.

SELECT * FROM members WHERE postal_address like '% TX';

Ringkasnya, wildcard membolehkan kita mengembangkan enjin carian kuasa ke dalam aplikasi berdasarkan data kita.

Jenis kad liar

% peratusan

% peratusan watak digunakan untuk menentukan corak sifar (0) atau lebih aksara . Ia mempunyai sintaks asas berikut.

SELECT statements… WHERE fieldname LIKE 'xxx%';

SINI

  • "SELECT statement ..." adalah perintah SQL SELECT standard.
  • "DI MANA" adalah kata kunci yang digunakan untuk menerapkan penapis.
  • "LIKE" adalah operator perbandingan yang digunakan bersama dengan wildcard
  • 'xxx' adalah corak permulaan yang ditentukan seperti satu watak atau lebih dan "%" sepadan dengan sebilangan aksara bermula dari sifar (0).

Untuk menghayati sepenuhnya pernyataan di atas, mari kita lihat contoh praktikal

Andaikan kita ingin mendapatkan semua filem yang mempunyai kata "code" sebagai sebahagian daripada tajuk, kita akan menggunakan wildcard peratusan untuk melakukan padanan corak pada kedua sisi kata "code". Berikut adalah pernyataan SQL yang boleh digunakan untuk mencapai hasil yang diinginkan.

SELECT * FROM movies WHERE title LIKE '%code%';

Melaksanakan skrip di atas di meja kerja MySQL terhadap myflixdb memberikan hasil yang ditunjukkan di bawah.

 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL
7 Davinci Code NULL NULL 6

Perhatikan bahawa walaupun kata kunci carian "kod" muncul pada awal atau akhir tajuk, kata kunci itu masih dikembalikan dalam set hasil kami. Ini kerana kod kami merangkumi sebilangan aksara pada awalnya dan sesuai dengan corak "kod" diikuti dengan sebilangan aksara pada akhir.

Sekarang mari ubah suai skrip di atas untuk memasukkan wildcard peratusan pada permulaan kriteria carian sahaja.

SELECT * FROM movies WHERE title LIKE '%code';

Melaksanakan skrip di atas di meja kerja MySQL terhadap myflixdb memberikan hasil yang ditunjukkan di bawah.

 
movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

Perhatikan bahawa hanya satu rekod yang dikembalikan dari pangkalan data. Ini kerana kod kami sepadan dengan sebilangan besar watak di awal tajuk filem dan hanya mendapat rakaman yang diakhiri dengan corak "kod".

Sekarang mari beralih peratusan wildcard ke hujung corak yang ditentukan untuk dipadankan. Skrip yang diubahsuai ditunjukkan di bawah.

SELECT * FROM movies WHERE title LIKE 'code%';
Melaksanakan skrip di atas di meja kerja MySQL terhadap myflixdb memberikan hasil yang ditunjukkan di bawah.
 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL

Perhatikan hanya satu rekod yang dikembalikan dari pangkalan data. Ini kerana kod kami sesuai dengan semua tajuk yang dimulakan dengan corak "kod" diikuti oleh sebilangan watak.

_ tanda petanda bawah garis bawah

Wildcard garis bawah digunakan untuk memadankan tepat satu watak . Anggaplah kita mahu mencari semua filem yang dilancarkan pada tahun 200x di mana x betul-betul satu watak yang boleh bernilai. Kami akan menggunakan kad liar garis bawah untuk mencapainya. Skrip di bawah ini memilih semua filem yang dirilis pada tahun "200x"

SELECT * FROM movies WHERE year_released LIKE '200_';

Melaksanakan skrip di atas di meja kerja MySQL terhadap myflixdb memberikan hasil yang ditunjukkan di bawah.

 
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
9 Honey mooners Jhon Shultz 2005 8

Perhatikan bahawa hanya filem yang mempunyai 200 diikuti oleh setiap watak dalam tahun lapangan yang dikeluarkan telah dikembalikan dalam set hasil kami. Ini kerana wildcard garis bawah sepadan dengan corak 200 diikuti oleh mana-mana watak tunggal

Tidak seperti

Pengendali TIDAK logik boleh digunakan bersama dengan wildcard untuk mengembalikan baris yang tidak sesuai dengan corak yang ditentukan.

Andaikan kita mahu mendapatkan filem yang tidak dilancarkan pada tahun 200x. Kami akan menggunakan pengendali TIDAK logik bersama dengan wildcard garis bawah untuk mendapatkan hasil kami. Di bawah ini adalah skrip yang melakukannya.

SELECT * FROM movies WHERE year_released NOT LIKE '200_';
 
movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
4 Code Name Black Edgar Jimz 2010 NULL
8 Underworld-Awakeninh Michahel Eal 2012 6

Perhatikan hanya filem yang tidak bermula dengan 200 pada tahun yang dikeluarkan telah dikembalikan dalam set hasil kami. Ini kerana kami menggunakan operator logik TIDAK dalam carian corak wildcard kami.

Kata kunci melarikan diri.

Kata kunci ESCAPE digunakan untuk melepaskan watak yang sepadan dengan corak seperti peratusan (%) dan garis bawah (_) jika mereka menjadi sebahagian daripada data.

Anggaplah bahawa kita ingin memeriksa rentetan "67%" yang boleh kita gunakan;

LIKE '67#%%' ESCAPE '#';

Sekiranya kita ingin mencari filem "67% Bersalah", kita boleh menggunakan skrip yang ditunjukkan di bawah untuk melakukannya.

SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';

Perhatikan dua kali " % %" dalam fasal LIKE itu, yang pertama dalam merah " % " adalah dianggap sebagai sebahagian daripada rentetan yang hendak dicari. Yang lain digunakan untuk mencocokkan sebilangan watak yang mengikuti.

Pertanyaan yang sama juga akan berfungsi sekiranya kita menggunakan sesuatu seperti

SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';

Ringkasan

  • Alat hebat seperti & Wildcard yang membantu mencari data yang sesuai dengan corak kompleks.
  • Terdapat sebilangan besar wildcard yang merangkumi peratusan, garis bawah dan senarai main (tidak disokong oleh MySQL) antara lain
  • Wildcard peratusan digunakan untuk mencocokkan sebilangan aksara bermula dari sifar (0) dan banyak lagi.
  • Wildcard garis bawah digunakan untuk memadankan tepat satu watak.