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.