Lassen Sie uns sagen, dass ich ein Freitextfeld ‚Notiz‘ und enthält genannt haben „ABC: 5/52, * zurück, Auftragseingang“Extract mehrere Strings aus einem Freitextfeld
Wie extrahieren I ‚5/52 'und' zurück 'und platziere sie in zwei separaten Spalten?
Hier ist, was ich
QUERY:-
SELECT *, SUBSTRING(Note, CHARINDEX(':', Note)+1, 4) as ABC,
SUBSTRING(Note, CHARINDEX('*', Note)+1, 4) as Ret_Stat
, CHARINDEX(':', Note) AS [Colon Index]
FROM [AdventureWorks2012].[Sales].[Comments]
RESULT:-
Note ABC Ret_Stat
ABC:3/52, To give more explanation, *back 3/52 back
ABC:3wks, To debrief, *back, r/v 3wks back
ABC:13/09/16, see cm, *back, new referral 13/0 back
Mein Problem ist, ich wollte 3/52, 3wks extrahieren und 13/09/16, aber mein Ergebnis einzige 13/10 erreichen wollte. Ich möchte fragen, wie man das erreicht? da die Bedingung der Extraktion von 4 bis 8 Zeichen nach ABC variieren kann: und die Tabelle enthält Tausende von Datenzeilen
Brauchen Sie Rat. Danke.
Es hängt alles davon ab, welche Norm (en) in Ihrem Bereich sind. Wenn es immer durch ein Komma getrennt ist, benutze CHARINDEX, um die Position des Kommas und SUBSTRING() zu finden. Sie können mehr charindex() für: Doppelpunkt oder Leerzeichen einfügen, um auch andere Positionen zu finden. Das Umkehren der Zeichenfolge ist gut, um die Position vom Ende der Zeichenfolge in Ihrem Fall zu finden, die 2 Kommata mehr hat, als dass Sie eine rekursive oder Schleife betrachten müssen. Aber Sie haben die wichtigsten 2 Funktionen, also versuchen Sie es und schreiben Sie einige spezifische Versuche, die Sie Fragen haben. Auch LTRIM(), RTRIM(), LINKS() und RECHTS() werden nützlich sein – Matt
Sorry, ich bin ein Neuling auf SQL. Hoffe, ich könnte mehr Beispiele für den Coding-Teil bekommen. Danke für die Antwort, ich werde es versuchen. Vielen Dank. – Danny
geben Sie uns ein paar Beispielzeichenfolgen und was Sie aus ihnen abrufen möchten –