String-Extraktion ohne TrennzeichenFragenanforderungen Feldwert in der Datenbank: Implementierungseffekt: Eine Datenzeile muss in mehrere Zeilen umgewandelt werden Implementiertes SQL Wählen Sie links (Substring ('P1111', Hilfethema-ID + 1), 1) als Nummer aus mysql.help_topic, wobei Hilfethema-ID < Länge ('P1111'); Beteiligte Wissenspunkte1. String-Abfangen: SUBSTRING(str,pos)1. Parameterbeschreibung
2. Beispiele (1) Alle Zeichen vor dem zweiten Komma "," als Trennzeichen verwenden. SUBSTRING_INDEX('7654,7698,7782,7788',',',2) (2) Alle Zeichen nach dem vorletzten Kommatrennzeichen "," abrufen SUBSTRING_INDEX('7654,7698,7782,7788',',',-2) 2. Ersetzungsfunktion: replace(str, from_str, to_str)1. Parametererklärung
2. Beispiele (1) Ersetzen Sie das Trennzeichen ",", Komma durch das Leerzeichen "". ERSETZEN('7654,7698,7782,7788',',','') 3. Ermitteln Sie die Länge des Strings: LENGTH( str )1. Parametererklärung
2. Beispiele (1) Ermitteln Sie die Länge der Zeichenfolge '7654,7698,7782,7788' LÄNGE('7654,7698,7782,7788') Implementiertes SQL-Parsing WÄHLEN SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS Nummer AUS mysql.hilfe_thema WO Hilfethema-ID < LÄNGE('7654,7698,7782,7788')-LÄNGE(ERSETZEN('7654,7698,7782,7788',',',''))+1 Hier wird help_topic_id aus der help_topic-Tabelle der MySQL-Bibliothek als Variable verwendet, da help_topic_id automatisch inkrementiert wird. Natürlich können auch automatisch inkrementierte Felder anderer Tabellen als Hilfe verwendet werden. help_topic-Tabelle: Implementierungsschritte: Schritt 1: Ermitteln Sie zunächst die Anzahl der Zeichenfolgen, die am Ende aufgeteilt werden müssen, und simulieren Sie mithilfe von help_topic_id das Durchlaufen der n-ten Zeichenfolge. Der Codeausschnitt beinhaltete: Hilfethema-ID < LÄNGE('7654,7698,7782,7788')-LÄNGE(ERSETZEN('7654,7698,7782,7788',',',''))+1 Schritt 2: Teilen Sie die Zeichenfolge basierend auf dem Komma "," mithilfe der Funktion SUBSTRING_INDEX (str, delim, count) auf und weisen Sie das Ergebnis dem Feld „num“ zu. Der Codeausschnitt beinhaltete: SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS Nummer Erster Schritt: Verwenden Sie das Komma "," als Trennzeichen und fangen Sie alle Zeichenfolgen vor dem n+1. Trennzeichen entsprechend dem Wert von help_topic_id ab. (Hier liegt n+1 daran, dass help_topic_id bei 0 beginnt und wir es hier aus dem ersten Trennzeichen abrufen müssen.) SUBSTRING_INDEX('7654,7698,7782,7788',',',Hilfethema-ID+1) Zum Beispiel: Wenn help_topic_id = 0, ist die erhaltene Zeichenfolge = 7654 Wenn help_topic_id = 1, ist die erhaltene Zeichenfolge = 7654,7698 …(und so weiter) Schritt 2: Verwenden Sie das Komma "," als Trennzeichen und extrahieren Sie alle Zeichenfolgen nach dem letzten Trennzeichen. SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',Hilfethema-ID+1),',',-1) Zum Beispiel: Laut dem ersten Schritt ist die erhaltene Zeichenfolge 7654, wenn help_topic_id = 0 ist. Zu diesem Zeitpunkt ist die im zweiten Schritt abgefangene Zeichenfolge 7654. Laut dem ersten Schritt ist die erhaltene Zeichenfolge 7654,7698, wenn help_topic_id = 1 ist. Zu diesem Zeitpunkt ist die im zweiten Schritt abgefangene Zeichenfolge 7698. …(und so weiter) Schließlich wurden die folgenden Effekte erfolgreich erzielt ~ Hinweis: Informationen zum Aufteilen von Zeichenfolgen ohne Trennzeichen finden Sie unter MySQL – Zeichenfolgenaufteilung (Zeichenfolgenabfang ohne Trennzeichen). Ergänzung: MySQL-Feldtrennzeichen split_Eine Funktion ähnlich SPLIT in MySQL zum Teilen von Zeichenfolgen Die folgende Funktion implementiert die Verarbeitung von Zeichenfolgen wie Arrays. 1. Verwenden einer temporären Tabelle als ArrayErstellen Sie die Funktion f_split(@c varchar(2000),@split varchar(2)). gibt @t table(col varchar(20)) zurück als beginnen während(charindex(@split,@c)<>0) beginnen @t(col)-Werte einfügen (Teilzeichenfolge(@c,1,Charindex(@split,@c)-1)) setze @c = Zeug(@c,@c),'') Ende @t(col)-Werte einfügen (@c) zurückkehren Ende gehen wähle * aus dbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',') Drop-Funktion f_split spalte -------------------- dfkd Abonnieren Abonnieren Abonnieren (Die Anzahl der betroffenen Zeilen beträgt 4) 2. Teilen Sie die Zeichenfolge durch das angegebene SymbolGibt die Anzahl der Elemente nach der Segmentierung zurück. Die Methode ist sehr einfach. Schauen Sie sich einfach an, wie viele Trennzeichen in der Zeichenfolge vorhanden sind, und fügen Sie dann eines hinzu. Das ist das gewünschte Ergebnis. CREATE-Funktion Get_StrArrayLength ( @str varchar(1024),--der zu teilende String @split varchar(10) --Trennzeichen) gibt int zurück als beginnen Deklarieren Sie @location int deklarieren Sie @start int Deklarieren Sie @length int setze @str=ltrim(rtrim(@str)) setze @location=charindex(@split,@str) setze @length=1 während @Standort<>0 beginnen setze @start=@location+1 setze @location=charindex(@split,@str,@start) setze @length=@length+1 Ende returniere @Länge Ende Aufrufbeispiel: Wählen Sie dbo.Get_StrArrayLength('78,2,3',')
3. Teilen Sie die Zeichenfolge durch das angegebene SymbolGibt das Element am angegebenen Index nach der Segmentierung zurück, so bequem wie ein Array CREATE-Funktion Get_StrArrayStrOfIndex ( @str varchar(1024),--der zu teilende String @split varchar(10),--Trennzeichen @index int --das erste zu nehmende Element) gibt varchar(1024) zurück als beginnen Deklarieren Sie @location int deklarieren Sie @start int deklarieren Sie @next in @seed int deklarieren setze @str=ltrim(rtrim(@str)) setze @start=1 setze @next=1 setze @seed=len(@split) setze @location=charindex(@split,@str) während @location<>0 und @index>@next beginnen setze @start=@location+@seed setze @location=charindex(@split,@start) setze @next=@next+1 Ende wenn @location =0 wähle @location =len(@str)+1 --Hier gibt es zwei Situationen: 1. Der String enthält kein Trennzeichen. 2. Der String enthält ein Trennzeichen. Nach dem Verlassen der while-Schleife ist @location 0, was bedeutet, dass standardmäßig ein Trennzeichen nach dem String steht. Teilzeichenfolge zurückgeben(@str,@start,@location-@start) Ende Aufrufbeispiel: Wählen Sie dbo.Get_StrArrayStrOfIndex('8,9,4',2)
4. Kombinieren Sie die beiden oben genannten Funktionen und durchlaufen Sie die Elemente in der Zeichenfolge wie ein ArrayDeklarieren Sie @str varchar (50) setze @str='1,3,4,5' deklarieren Sie @next in setze @next=1 während @next<=dbo.Get_StrArrayLength(@str,') beginnen drucken dbo.Get_StrArrayStrOfIndex(@str,@next) setze @next=@next+1 Ende Anrufergebnis:
Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur. Das könnte Sie auch interessieren:
|
<<: CSS-Navigationsleistenmenü mit kleinem Dreieck-Implementierungscode
>>: Grundlegende Nutzungsdetails zur Vue-Komponentenbildung
Das JD-Karussell wurde mit reinem HTML und CSS im...
Vorwort Im Falle eines Primärschlüsselkonflikts o...
<br />Wenn XHTML und CSS nur objektorientier...
Das dürfte etwas sein, was viele Leute gemacht ha...
Das Image kann problemlos direkt in das öffentlic...
Vorschauadresse: https://ovsexia.gitee.io/leftfix...
Die erste Methode: Fügen Sie dynamisch eine Klass...
In diesem Artikel wird der spezifische Code des d...
Ich werde nicht viel Unsinn erzählen, schauen wir...
Inhaltsverzeichnis Methode 1: Rufen Sie die Funkt...
Viele Freunde berichten von folgendem Fehler, wen...
Szenario 1: Aufgrund von Serverbeschränkungen ist...
Ein Student im zweiten Studienjahr fragte mich, w...
Inhaltsverzeichnis Vorwort Text Primitive Typen P...
Normalerweise verwenden wir die Tags <ul><...