Rumah  >  Artikel  >  pangkalan data  >  Analisis fungsi carian rentetan find_in_set dalam mysql

Analisis fungsi carian rentetan find_in_set dalam mysql

WBOY
WBOYke hadapan
2022-08-29 11:45:302378semak imbas

Pembelajaran yang disyorkan: tutorial video mysql

Keperluan

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.

Rancang

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?

Fungsi

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.

1. Pengenalan

MySQL menyediakan fungsi rentetan terbina dalam dipanggil FIND_IN_SET(), yang membolehkan anda mencari kedudukan rentetan tertentu dalam senarai rentetan yang dipisahkan koma.

2. Sintaks: FIND_IN_SET(needle,hystack)

Fungsi FIND_IN_SET() menerima dua parameter:

  • needleYa 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:

  • Jika jarum atau timbunan jerami adalah NULL , fungsi mengembalikan nilai NULL.
  • Kembalikan sifar jika jarum tiada dalam timbunan jerami, atau jika timbunan jerami adalah rentetan kosong.
  • Jika jarum berada dalam timbunan jerami, kembalikan integer positif.

3. Pertempuran praktikal

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.

Selingan

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!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam