Heim  >  Artikel  >  Datenbank  >  Analyse der String-Suchfunktion find_in_set in MySQL

Analyse der String-Suchfunktion find_in_set in MySQL

WBOY
WBOYnach vorne
2022-08-29 11:45:302349Durchsuche

Empfohlenes Lernen: MySQL-Video-Tutorial

Anforderungen

Im System erfordern einige Plattformen eine Verkäuferbewertung, unabhängig davon, ob es sich um eine Bestellung oder eine Rücksendung handelt, andere nicht, sodass Sie Bestellungen aufgeben oder zurücksenden können Bestellungen im System Der Prozessknoten der Retourenbestellung.

Für jeden Prozessknoten besteht die Anforderung des Kunden, dass jeder Knoten entsprechend der Rolle des Mitarbeiters im System verteilt werden soll, damit der Auftrag einer Einzelperson zugewiesen werden kann, anstatt von Mitarbeitern des gesamten Unternehmens bearbeitet zu werden.

Lösung

Für das obige Szenario besteht die von mir implementierte Lösung darin, das entsprechende zu verarbeitende Knotenfeld sowohl zur Bestelltabelle als auch zur Rücksendeauftragstabelle hinzuzufügen. Wenn mehrere Personen es verarbeiten können, verwenden Sie , um das entsprechende Feld zu trennen und zu speichern Mitarbeiter-ID festgelegt.

Daher müssen wir auch die Art und Weise der Auftragsabfrage entsprechend anpassen. Jeder kann nur die Aufträge sehen, die er bearbeiten kann.

Der Beispielinhalt der Tabelle lautet wie folgt:

Wenn sich ein Mitarbeiter beim System anmeldet, können wir seine entsprechende ID abrufen und müssen im entsprechenden Feld nach seiner ID suchen, ob dies der Fall ist im Geschäftsbericht, Finanzbericht oder Einlieferer im Inkasso. Wie sollte die SQL zu diesem Zeitpunkt geändert werden?

Funktion

Bevor ich SQL geändert habe, dachte ich, dass ich bereits viele Funktionen von MYSQL zusammengefasst habe und dass es für die obige Implementierung definitiv entsprechende Funktionen in MYSQL geben wird, die uns dabei helfen, dies zu erreichen. Tatsächlich habe ich es gefunden.

1. Einführung

MySQL bietet eine integrierte String-Funktion namens FIND_IN_SET(), mit der Sie die Position eines angegebenen Strings in einer durch Kommas getrennten Liste von Strings finden können.

2. Syntax: FIND_IN_SET(needle,haystack)

Die Funktion FIND_IN_SET() akzeptiert zwei Parameter:

  • needle ist die zu findende Zeichenfolge. needle是要查找的字符串。
  • haystack
  • haystack ist eine durch Kommas getrennte Liste von Zeichenfolgen, nach denen gesucht werden soll. Die Funktion

FIND_IN_SET() gibt abhängig vom Wert des Parameters eine Ganzzahl oder einen NULL-Wert zurück:

  • Wenn Nadel oder Heuhaufen NULL sind, gibt die Funktion einen NULL-Wert zurück.
  • Wenn sich die Nadel nicht im Heuhaufen befindet oder der Heuhaufen eine leere Zeichenfolge ist, wird Null zurückgegeben.
  • Wenn sich die Nadel im Heuhaufen befindet, geben Sie eine positive Ganzzahl zurück. 3. Praktischer Kampf Im Screenshot der obigen Ergebnisse können die drei eingerahmten Aufträge mit den IDs 6594, 6523 und 6373 nur von der Mitarbeiternummer 8910 verarbeitet werden. Wenn wir die obige SQL-Mitarbeiternummer in 8912 ändern, sollten diese drei Aufträge nicht im Ergebnis enthalten sein Bereich, um zu überprüfen, ob es möglich ist, diese Funktion zum Abfragen zu verwenden.

Die Abfrageergebnisse lauten wie folgt:

Die Ergebnisse beweisen, dass bei der Abfrage kein Problem vorliegt.

Zwischenspiel

Vor zwei Tagen hat ein Kollege einen Screenshot in der Gruppe gepostet und eine Frage wie folgt gestellt:

Eine kurze Beschreibung:

In der Spalte der Bildadresse wird unsere alte Adresse gespeichert Da das neue Rechenzentrum nun online ist, muss es durch die neue Adresse ersetzt werden, um Bilder zu erhalten.

Nachdem ich das gelesen hatte, fiel mir die REPLACE()-Funktion in MYSQL ein, die ich zuvor verwendet hatte und die Strings ersetzen kann. Daher lautet die Update-Anweisung wie folgt:

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

Empfohlenes Lernen: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonAnalyse der String-Suchfunktion find_in_set in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen