Gibt es eine LastIndexOf in SQL Server?
Ich versuche zu analysieren, einen Wert aus einer Zeichenfolge, die beinhaltet, das Letzte index einer Zeichenfolge. Derzeit mache ich eine schreckliche hack, beinhaltet die Umkehrung einer Zeichenkette:
SELECT REVERSE(SUBSTRING(REVERSE(DB_NAME()), 1,
CHARINDEX('_', REVERSE(DB_NAME()), 1) - 1))
Mir dieser code ist fast unlesbar. Ich habe nur ein Upgrade auf SQL Server 2016 und ich hoffe, dass es einen besseren Weg gibt.
Ist es?
InformationsquelleAutor der Frage AngryHacker | 2016-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, dass alles nach dem letzten
_
dann verwenden:Wenn Sie möchten, dass alles, was vor, dann verwenden Sie
left()
:InformationsquelleAutor der Antwort Gordon Linoff
Schrieb 2 Funktionen, 1 zurück LastIndexOf für den ausgewählten Charakter.
und 1, um einen string zurückzugeben, bevor dieser LastIndexOf. Vielleicht wird es nützlich sein, um jemanden.
InformationsquelleAutor der Antwort user2771704
Nein, SQL-server nicht LastIndexOf.
Dies sind die verfügbaren string Funktionen
Aber Sie können immer Ihre eigene Funktion erstellen,
InformationsquelleAutor der Antwort Juan Carlos Oropeza
InformationsquelleAutor der Antwort Christoph
Sobald Sie eines der split strings von hier,Sie können es in einem Satz basierte Art und Weise wie diese..
InformationsquelleAutor der Antwort TheGameiswar
Stieß ich auf diesen thread bei der Suche nach einer Lösung für mein ähnliches problem, der hatte den exakt gleichen Voraussetzung war aber für eine andere Art von Datenbank, fehlte die
REVERSE
Funktion.In meinem Fall war dies für ein OpenEdge (Fortschritt) Datenbank, die hat eine etwas andere syntax. Dies machte die
INSTR
Funktion für mich, dass die meisten Oracle-Datenbanken eingegeben anbieten.Also ich kam mit dem folgenden code:
Jedoch für meine konkrete situation (der OpenEdge (Fortschritt) Datenbank) diese nicht in das gewünschte Verhalten zu ersetzen, weil der Charakter mit einem leeren char gab die gleiche Länge als die ursprüngliche Zeichenfolge. Dies macht nicht viel Sinn zu mich, aber ich war in der Lage zu umgehen, das problem mit den folgenden code:
Verstehe ich jetzt, dass dieser code nicht lösen das problem für T-SQLweil es keine alternative zu den
INSTR
- Funktion, bietet dieOccurence
Eigenschaft.Nur um gründlich zu sein, werde ich den code, der benötigt wird, um dieses Skalare Funktion, so dass es verwendet werden kann, die gleiche Weise, wie ich in der oben genannten Beispiele. Und wird genau das tun, was der OP wollte, dienen als LastIndexOf Methode für SQL Server.
Vermeiden Sie die offensichtliche, wenn die
REVERSE
Funktion verfügbar ist, brauchen Sie nicht zu erstellen, diese scalar-Funktion und Sie können einfach das gewünschte Ergebnis wie dieses:InformationsquelleAutor der Antwort Oceans