MySQL Joker Karakterleri nedir?
MySQL Joker Karakterleri , karmaşık ölçütlerle eşleşen verilerin aranmasına yardımcı olan karakterlerdir. Joker karakterler, LIKE karşılaştırma operatörü veya NOT LIKE karşılaştırma operatörü ile birlikte kullanılır.
Neden Joker Karakterler kullanılıyor?
SQL kullanımına aşinaysanız, SELECT ve WHERE yan tümcesini kullanarak karmaşık verileri arayabileceğinizi düşünebilirsiniz. Öyleyse neden Joker Karakterler kullanılsın?
Bu soruyu cevaplamadan önce bir örneğe bakalım. Myflix video kütüphanesinin pazarlama departmanının Teksas şehrinde pazarlama promosyonları gerçekleştirdiğini ve üye sayısı hakkında geri bildirim almak istediğini varsayalım.
Texas'tan kaydedilmişse, istenen bilgileri almak için aşağıdaki SELECT ifadesini WHERE cümlesiyle birlikte kullanabilirsiniz.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Yukarıdaki sorgudan da görebileceğiniz gibi, "WHERE yan tümcesi" karmaşık hale gelir. Ancak joker karakterlerin kullanılması, aşağıda gösterilen komut dosyası gibi basit bir şey kullanabildiğimiz için sorguyu basitleştirir.
SELECT * FROM members WHERE postal_address like '% TX';
Kısacası, joker karakterler, güçlü arama motorlarını veri odaklı uygulamalarımıza dönüştürmemize olanak tanır.
Joker karakter türleri
% yüzde
% sıfır (0) veya daha fazla karakterden oluşan bir desen belirtmek için yüzde karakteri kullanılır . Aşağıdaki temel sözdizimine sahiptir.
SELECT statements… WHERE fieldname LIKE 'xxx%';
İŞTE
- "SELECT deyimi…" standart SQL SELECT komutudur.
- "NEREDE", filtreyi uygulamak için kullanılan anahtar kelimedir.
- "LIKE", joker karakterlerle birlikte kullanılan karşılaştırma operatörüdür
- "xxx", tek bir karakter veya daha fazlası gibi belirtilen herhangi bir başlangıç kalıbıdır ve "%", sıfırdan (0) başlayan herhangi bir sayıda karakterle eşleşir.
Yukarıdaki ifadeyi tam olarak değerlendirmek için pratik bir örneğe bakalım
Başlığının bir parçası olarak "kod" kelimesini içeren tüm filmleri almak istediğimizi varsayalım, "kod" kelimesinin her iki tarafında bir kalıp eşleşmesi gerçekleştirmek için yüzde joker karakterini kullanacağız. İstenilen sonuçları elde etmek için kullanılabilecek SQL ifadesi aşağıdadır.
SELECT * FROM movies WHERE title LIKE '%code%';
Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen sonuçları verir.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
"Kod" arama anahtar sözcüğü başlığın başında veya sonunda görünse bile, sonuç kümemizde yine de döndürüldüğüne dikkat edin. Bunun nedeni, kodumuzun başında herhangi bir sayıda karakter içermesi ve ardından "kod" kalıbının sonunda herhangi bir sayıda karakterle eşleşmesidir.
Şimdi yukarıdaki komut dizimizi yalnızca arama kriterlerinin başına yüzde joker karakterini içerecek şekilde değiştirelim.
SELECT * FROM movies WHERE title LIKE '%code';
Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen sonuçları verir.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Veritabanından yalnızca bir kaydın döndürüldüğüne dikkat edin. Bunun nedeni, kodumuzun film başlığının başındaki herhangi bir sayıda karakterle eşleşmesi ve yalnızca "kod" kalıbı ile biten kayıtları almasıdır.
Şimdi yüzde joker karakterini, eşleştirilecek belirtilen kalıbın sonuna kaydıralım. Değiştirilen komut dosyası aşağıda gösterilmektedir.
SELECT * FROM movies WHERE title LIKE 'code%';Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen sonuçları verir.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Veritabanından yalnızca bir kaydın döndürüldüğüne dikkat edin. Bunun nedeni, kodumuzun "kod" kalıbı ve ardından herhangi bir sayıda karakterle başlayan tüm başlıklarla eşleşmesidir.
_ alt çizgi joker karakteri
Alt çizgi joker karakteri, tam olarak bir karakterle eşleşmek için kullanılır . Diyelim ki 200x yılında piyasaya sürülen ve x'in herhangi bir değer olabilecek tam bir karakter olduğu tüm filmleri aramak istiyoruz. Bunu başarmak için alt çizgi jokerini kullanırdık. Aşağıdaki komut dosyası, "200x" yılında gösterime giren tüm filmleri seçer.
SELECT * FROM movies WHERE year_released LIKE '200_';
Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen sonuçları verir.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Yayınlanan yıl içinde herhangi bir karakter tarafından 200 takip edilen filmlerin sonuç setimizde geri döndüğüne dikkat edin. Bunun nedeni, alt çizgi jokerinin 200 kalıbı ve ardından herhangi bir tek karakterle eşleşmesidir.
Gibi değil
NOT mantıksal operatörü, belirtilen modelle eşleşmeyen satırları döndürmek için joker karakterlerle birlikte kullanılabilir.
200x yılında gösterime girmemiş filmleri almak istediğimizi varsayalım. Sonuçlarımızı almak için, mantıksal DEĞİL işlecini alt çizgi joker karakteriyle birlikte kullanırdık. Bunu yapan komut dosyası aşağıdadır.
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 |
Sonuç setimizde yalnızca vizyona giren yılda 200 ile başlamayan filmlerin geri döndüğüne dikkat edin. Bunun nedeni, joker karakter kalıbı aramamızda NOT mantıksal işlecini kullanmamızdır.
Escape anahtar sözcüğü.
ESCAPE anahtar sözcüğü, verilerin bir parçasını oluşturuyorlarsa (%) yüzdesi ve alt çizgi (_) gibi kalıp eşleme karakterlerinden kaçmak için kullanılır .
Kullanabileceğimiz "% 67" dizesini kontrol etmek istediğimizi varsayalım;
LIKE '67#%%' ESCAPE '#';
"% 67 Suçlu" filmini aramak istersek, bunu yapmak için aşağıda gösterilen senaryoyu kullanabiliriz.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Çift "Not % LIKE şartında%", kırmızı "in ilki % " dizesinin bir parçası olarak ele alınır aranacak. Diğeri, takip eden herhangi bir sayıda karakteri eşleştirmek için kullanılır.
Aynı sorgu, aşağıdaki gibi bir şey kullanırsak da işe yarayacaktır.
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Özet
- Benzer & Joker Karakterler, karmaşık kalıplarla eşleşen verileri aramaya yardımcı olan güçlü araçlar.
- Yüzde, alt çizgi ve karakter listesini (MySQL tarafından desteklenmez) içeren bir dizi joker karakter vardır.
- Yüzde joker karakteri, sıfır (0) ve daha fazlasından başlayarak herhangi bir sayıda karakteri eşleştirmek için kullanılır.
- Alt çizgi joker karakteri, tam olarak bir karakterle eşleşmek için kullanılır.