Rumah > Artikel > pangkalan data > Analisis fungsi carian rentetan find_in_set dalam mysql
Pembelajaran yang disyorkan: tutorial video mysql
Dalam sistem, sama ada pesanan atau pesanan pemulangan, Sesetengah platform memerlukan semakan penjual, manakala yang lain tidak, jadi anda boleh menetapkan nod proses untuk pesanan atau pemulangan dalam sistem.
Untuk setiap nod proses, keperluan pelanggan ialah setiap nod harus diedarkan mengikut peranan pekerja di bawah sistem, supaya pesanan boleh diberikan kepada individu dan bukannya diproses oleh pekerja keseluruhan syarikat.
Untuk senario di atas, penyelesaian yang saya laksanakan ialah menambah nod yang sepadan untuk medan orang diproses dalam kedua-dua jadual pesanan dan jadual pesanan pulangan Jika berbilang orang boleh memprosesnya , gunakan, untuk memisahkan, Simpan koleksi id pekerja yang sepadan.
Oleh itu, kami juga perlu membuat pengubahsuaian yang sepadan dalam kaedah pertanyaan pesanan Semua orang hanya boleh melihat pesanan yang boleh mereka proses.
Contoh kandungan jadual adalah seperti berikut:
Apabila pekerja log masuk ke sistem, kami boleh mendapatkan id mereka yang sepadan, dan kita perlu Cari id dalam medan yang sepadan untuk melihat sama ada ia berada dalam semakan perniagaan, semakan kewangan atau koleksi pengirim. Pada masa ini, bagaimanakah SQL harus diubah?
Sebelum menukar SQL, saya fikir banyak fungsi MYSQL telah diringkaskan sebelum ini, dan untuk pelaksanaan di atas, pasti akan ada fungsi yang sepadan dalam MYSQL untuk membantu kami mencapainya. Sudah tentu, saya menjumpainya.
MySQL menyediakan fungsi rentetan terbina dalam dipanggil FIND_IN_SET(), yang membolehkan anda mencari kedudukan rentetan tertentu dalam senarai rentetan yang dipisahkan koma.
Fungsi FIND_IN_SET() menerima dua parameter:
needle
Ya Rentetan untuk mencari. haystack
ialah senarai rentetan yang dipisahkan koma untuk dicari. Fungsi FIND_IN_SET() mengembalikan integer atau nilai NULL bergantung pada nilai parameter:
Berikut ialah SQL pesanan yang boleh diproses oleh pekerja dengan nombor 8910 dalam projek dan sedang menunggu semakan perniagaan:
SELECT t.id_,t.order_sn,t.create_time, t.business_employee_ids,cus.customer_title FROM wms_orders t LEFT JOIN wms_customer cus ON cus.id = t.buyer_id WHERE t.order_status != 100 AND t.comp_id = 8815 AND FIND_IN_SET( '8910', t.business_employee_ids ) AND t.order_status = 14 AND ( t.parent_order_sn IS NULL OR t.parent_order_sn = '' ) ORDER BY t.id_ DESC
Keputusan adalah seperti berikut:
Dalam tangkapan skrin keputusan di atas, ketiga-tiga pesanan dengan ID 6594, 6523, dan 6373 hanya boleh diproses oleh nombor pekerja 8910. Kami akan menggunakan nombor pekerja SQL di atas Jika ia ditukar kepada 8912, maka ketiga-tiga pesanan ini tidak seharusnya berada dalam julat hasil, sekali gus mengesahkan sama ada ia boleh digunakan untuk membuat pertanyaan.
Hasil pertanyaan adalah seperti berikut:
Hasilnya membuktikan bahawa tiada masalah dengan pertanyaan.
Dua hari lalu, seorang rakan sekerja menyiarkan tangkapan skrin dalam kumpulan dan bertanya soalan, seperti berikut:
Penerangan ringkas:
Lajur alamat imej menyimpan alamat pusat data lama kami, dan kini pusat data baharu dalam talian, ia perlu diganti dengan alamat baharu untuk mendapatkan imej.
Selepas membaca ini, saya memikirkan fungsi REPLACE() dalam MYSQL yang pernah saya gunakan sebelum ini, yang boleh menggantikan rentetan. Oleh itu, kenyataan kemas kini adalah seperti berikut:
UPDATE wms_platform_wear_brand SET brand_img = REPLACE ( brand_img, "http://***/udata/interface/timer/pic/getAttachPic.do?attachId=", "wms/orderGoods.do?method=getAttachPic&attachId=" )
Pembelajaran yang disyorkan: tutorial video mysql
Atas ialah kandungan terperinci Analisis fungsi carian rentetan find_in_set dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!