Mysql Multiple Veri Alanlarında Regex ile Arama işlemi

Mysql tablolarında eşleştirme yaptığımız birden fazla alanlar olabiliyor. Bu alanlarda join işlemi arama yaparken hata verebiliyor bu hataların önüne geçip nokta atışı yapacağımız bir işlemden bahsedeceğim.

öncelikle otel adında bir tablomuz var bu otelin 5 ilde şubesi var.Her şube bilgisini ayrı alanlara kaydetmek yerine il alanına ayrıştırarak kaydetme yapabiliriz.

Mysql tablomuz aşağıdaki gibidir

 CREATE TABLE `sehir` (`id` int,`sehiradi` varchar(255)); CREATE TABLE `oteller` (`id` int`oteladi` varchar(255),`sehirid` int); INSERT INTO `sehir` (`id`, `sehiradi`) VALUES (1, 'Hatay'); INSERT INTO `sehir` (`id`, `sehiradi`) VALUES (2, 'Gaziantep'); INSERT INTO `sehir` (`id`, `sehiradi`) VALUES (3, 'Osmaniye'); INSERT INTO `sehir` (`id`, `sehiradi`) VALUES (4, 'Mersin'); INSERT INTO `sehir` (`id`, `sehiradi`) VALUES (5, 'Adana'); INSERT INTO `oteller` (`id`, `oteladi`, 'sehirid') VALUES (1, 'Anemon Otel', '1 | 2 | 3 | 4 | 5'); 

Bilgileri ekledikten sonra içinde 1 olan Yani Hatay geçen otellerde arama yapıyoruz.

$sql="SELECT * FROM oteller WHERE sehirid REGEXP '[[:<:]]1[[:>:]]'";

burdaki işlemde [[:<:]] aralık başlangıcı [[:>:]] işaretleri ise aralık bitişidir.
işlemimiz bu kadar. Aklınıza takılan birşey olursa yorum bölümünden yazabilirsiniz.
Başka bir yazıda görüşmek üzere...

  • Aslında gayet mantıklı. Bilgilendirme için teşekkürler.

    • Ö. Doğan

      rica ederim işine yarayacaksa güzel.

      • Ustan ekleme ve çıkartmada nasıl bir yol izleriz onun hakkında da bilgi verebilir misin? Mesela 1|2|3|4|5|6 deki 3 çıkartıcam veya ilerde şöyle oldu diyelim 12|21|33|45|523|64 523 yazanı silmem lazım nasıl yaparım?

        • Ö. Doğan

          içinde 33 geçeni aynı yöntemle ararsın veriyi çekersin çektiğin veriden 33 ü explode edersin sonra update ile yeni veriyi yazarsın . silme işlemi tamamlanmış olur