• 23-03-2021, 18:41:04
    #1
    Merhaba arkadaşlar,

    Şöyle bir problemim var çözemedim yardımcı olursanız çok sevinirim.

    şimdi bir tablomda verileri json formatında tutuyorum

    örnek ; {"a":["1","3"],"b":["1","2","3"],"c":["2","4","5"],"d":["1","0","2"]}

    ben bir search işlemi yapmak istiyorum kullanıcının gönderdiği değerle

    örnek; a=1,b=2,c=4,d=0

    ben bu verilere uygun satırları nasıl çekebilirim?


  • 23-03-2021, 18:44:42
    #2
    merhabalar

    eğer verilerin yeri hep aynıysa

    örneğin
    a nın arrayinden 1.yi b den 2.yi c den de 2.yi alıp yapabilirsiniz
    ama sürekli yerleri ve veriler değişiyorsa biraz uğraştırır
  • 23-03-2021, 18:45:09
    #3
    ... WHERE JSON_EXTRACT(json_field, "$.a")=1 and JSON_EXTRACT(json_field, "$.b")=2 gibi..

    EDIT: ek olarak JSON_SEARCH, JSON_VALUE ve JSON_CONTAINS fonksiyonlarını da araştırabilirsiniz
  • 23-03-2021, 19:06:53
    #4
    bsggr78 adlı üyeden alıntı: mesajı görüntüle
    merhabalar

    eğer verilerin yeri hep aynıysa

    örneğin
    a nın arrayinden 1.yi b den 2.yi c den de 2.yi alıp yapabilirsiniz
    ama sürekli yerleri ve veriler değişiyorsa biraz uğraştırır
    verilerin yeri değilde aldıkları değerler değişiyor
  • 23-03-2021, 19:07:50
    #5
    per adlı üyeden alıntı: mesajı görüntüle
    ... WHERE JSON_EXTRACT(json_field, "$.a")=1 and JSON_EXTRACT(json_field, "$.b")=2 gibi..

    EDIT: ek olarak JSON_SEARCH, JSON_VALUE ve JSON_CONTAINS fonksiyonlarını da araştırabilirsiniz
    json_extract ve json_search denedim ama başarıya ulaşamadım belki ben yanlış yazdım.
    json_extract böyle kullandım
    SELECT * FROM `users` WHERE JSON_EXTRACT(json_verisi, "$.a")=1 boş dönüyor ama a verisinde 1 değeri bulunuyor
  • 23-03-2021, 19:10:51
    #6
    JSON_CONTAINS daha uygun gibi duruyor, çünkü alt arrayleriniz var, gözümden kaçmış. json alan içerisinde belirttiğiniz fieldda belirttiğiniz değer yer alıyorsa 1 döner.
  • 23-03-2021, 19:14:24
    #7
    denemedim ama SELECT JSON_CONTAINS(json_field, '1', '$.a') şeklinde olması lazım.
  • 23-03-2021, 19:14:47
    #8
    per adlı üyeden alıntı: mesajı görüntüle
    JSON_CONTAINS daha uygun gibi duruyor, çünkü alt arrayleriniz var, gözümden kaçmış. json alan içerisinde belirttiğiniz fieldda belirttiğiniz değer yer alıyorsa 1 döner.
    teşekkürler şöyle kullanınca sorun çözüldü

    SELECT * FROM `users` WHERE JSON_CONTAINS(json_veri, '{"a": ["1","3"]}')