Manchmal muss MySQL eine Funktion ähnlich zu lastIndexOf verwenden, es ist jedoch keine vorgefertigte Funktion direkt verfügbar, sodass Sie diese selbst herausfinden müssen. Erstens bietet MySQL die folgenden drei Funktionen:instr(str:varchar, substr:varchar): Gibt das erste Vorkommen von subsrtr in str# zurück. Beispiel: Suchen Sie das erste Vorkommen von b in der Zeichenfolge ab/cd/abc.html. select instr('ab/cd/abc.html', 'b'); # Anders als der Programmierer denkt, ist das obige Ergebnis 2 (der Index beginnt bei 1, bitte beachten) reverse(str:varchar): Kehren Sie die Zeichenfolge von Anfang bis Ende um, geben Sie abc ein und geben Sie cba aus length(str:varcha): Gibt die Länge des Strings zurück Nachdem die obigen Informationen bekannt sind, denke ich, dass die meisten Leute wissen, wie die Funktion lastInfdexOf implementiert wird. Geben Sie direkt an:select length('Eingabezeichenfolge') - instr(reverse('Eingabezeichenfolge'), 'zu durchsuchende Zeichenfolge'); # zB: Suchen Sie die letzte Position von „/“ in der Zeichenfolge „ab/cd/abc.html“. Die Ergebnisse sind: 5 Wählen Sie Länge ('ab/cd/abc.html') – Instr (umgekehrt ('ab/cd/abc.html'), '/'); Zum Schluss noch eine kleine Anforderung, auf die ich kürzlich gestoßen bin: Schreiben Sie ein SQL-Skript, um den Wert des Datenbankfelds abzurufen (der Wert ist der Pfadname der Datei, z. B. ab/cd/abc.html) und den Dateinamen (abc.html) zu analysieren: Wählen Sie rechts (INHALTSNAME, instr (umgekehrt (INHALTSNAME), '/') - 1) DATEINAME von config_template_content wobei lower(CONTENT_NAME) wie '%/%.html' ist; # Dies reicht aus, wenn die Daten / enthalten. Wenn der Feldwert abcde.html ist, müssen Sie eine Entscheidung treffen ~ Oben wird die richtige Funktion verwendet. Bitte suchen (erfahren) Sie selbst nach ihrer Nützlichkeit. Ergänzung: Probleme bei der Verwendung der MySQL-Anweisung SELECT LAST_INSERT_ID() Vorwort:Wenn wir einen Datensatz in eine Datenbanktabelle einfügen, deren Primärschlüssel automatisch inkrementiert ist (z. B. die Benutzertabelle), erwarten wir, die ID des gerade geschriebenen Datensatzes zu erhalten (da wir in einigen Szenarien diese ID benötigen, um andere Vorgänge auszuführen). Zu diesem Zeitpunkt müssen wir die Anweisung SELECT LAST_INSERT_ID () verwenden, um den Wert der automatisch inkrementierten ID zu erhalten, die nach dem Einfügen des Datensatzes zurückgegeben wird. Als Beispiel: /** * Beschwerdeinformationen einfügen * @param complaintInfoModel * @zurückkehren */ @InsertProvider(Typ = ComplaintInfoDao.ComplaintProviderSql.class, Methode = "insertComplaintInfo") @SelectKey(Anweisung="SELECT LAST_INSERT_ID()", Schlüsseleigenschaft="id", vorher=false, Ergebnistyp=Integer.class) Integer insertComplaintInfo(ComplaintInfoModel complaintInfoModel); // Daten einfügen und Anzahl der geänderten Datenbankeinträge zurückgeben SelectKey in Mybatis löst das Problem, dass der Primärschlüssel beim Einfügen von Daten nicht automatisch generiert wird. Die Methode zur Generierung des Primärschlüssels kann nach Belieben festgelegt werden. Aber egal, wie gut SelectKey ist, versuchen Sie, diese Situation zu vermeiden, schließlich ist sie sehr lästig. selectKey-Attribute
----1. SelectKey muss auf das Bestellattribut achten, In Datenbanken wie MySQL, die automatisches Wachstum unterstützen, muss die Reihenfolge auf „nach“ gesetzt werden, um den richtigen Wert zu erhalten. Wenn Sie eine Sequenz wie bei Oracle verwenden, muss sie auf „vorher“ gesetzt werden, andernfalls wird ein Fehler gemeldet. -----2. Wenn Sie Spring zur Verwaltung von Transaktionen verwenden, SelectKey und Insert erfolgen in derselben Transaktion. In diesem Fall kann Mysql den automatisch erhöhten Schlüssel nicht abrufen, da die Daten nicht in die Datenbank eingefügt werden. Brechen Sie die Transaktionsverwaltung ab, dann tritt kein Problem mehr auf. Nachfolgend finden Sie ein Beispiel für XML und Annotationen. Der SelectKey ist sehr einfach und zwei Beispiele reichen aus: <insert id="insert" parameterType="map"> in Tabelle1 (Name) Werte einfügen (#{name}) <selectKey resultType="java.lang.Integer" keyProperty="id"> CALL IDENTITY() </Schlüsselauswahl> </einfügen> Der Eingabeparameter der obigen XML ist map, und selectKey fügt das Ergebnis in den Eingabeparameter map ein. Bei POJO ist die Situation dieselbe. Allerdings muss beachtet werden, dass das der keyProperty entsprechende Feld über eine entsprechende Setter-Methode im POJO verfügen muss und der Parametertyp des Setters konsistent sein muss, da sonst ein Fehler gemeldet wird. @Insert("in Tabelle2 (Name) Werte einfügen(#{name})") @SelectKey(Anweisung="Aufrufidentität()", Schlüsseleigenschaft="NameId", vorher=false, Ergebnistyp=int.class) int insertTable2(Name name); Das Obige hat die Form einer Anmerkung. 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:
|
<<: Lösen Sie das Problem, nachdem Sie --subnet zum Docker-Netzwerk hinzugefügt haben.
>>: jQuery implementiert einen einfachen Popup-Fenstereffekt
Erstellen eines Projektverzeichnisses mkdir php E...
Nachfragehintergrund Das Projekt wurde mit Vue er...
Zum Beispiel: <link rel="stylesheet" ...
In der fünften Ausgabe von Web Skills wird ausdrü...
In diesem Artikel finden Sie den spezifischen Cod...
In diesem Artikelbeispiel wird der spezifische Co...
Der Inhalt des geschriebenen Dockerfiles ist: VON...
Dynamische Bibliothek kann unter Linux nicht gela...
Inhaltsverzeichnis Einführung in gespeicherte Pro...
Inhaltsverzeichnis Vorwort 1. Kurze Analyse der z...
Dieser Artikel stellt den Implementierungscode vo...
Unter Linux wird Bash als Standard übernommen, wa...
In diesem Artikelbeispiel wird der spezifische Co...
Implementierungsvorbereitung # Der Dateipfad muss...
Inhaltsverzeichnis 1. Weltweit registrierte Kompo...