ArthurDent Geschrieben 16. August 2010 Teilen Geschrieben 16. August 2010 Moin, moin, ich möchte in einer query für das MS SQL Reporting Services in einer Tabelle das Feld "buchungstext" nach einer bestimmten Zeichenfolge = G+5 Ziffern abfragen (in regexpr etwa so [1-5]{5}). So weit ich weiß, kann ich regexpr nicht direkt in MS SQL verwenden? Welche Möglichkeiten hätte ich noch? (ein einfaches like 'G_____' reicht nicht, da ja im Text alles mögliche stehen kann, es muss G gefolgt von 5 Ziffern sein). Grüße Micha Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ArthurDent Geschrieben 16. August 2010 Autor Teilen Geschrieben 16. August 2010 ich habe nach einigen Versuchen die Lösung via patindex gefunden. Hier ist eine Zeichenauswahl wie bei den regexpr möglich. In Verbindung mit substr konnte ich den gesuchten String extrahieren: SELECT CASE WHEN LTRIM(RTRIM(T1.[c009])) = LTRIM(RTRIM(T2.c002)) THEN IsNull(T1.c009, '') WHEN LTRIM(RTRIM(T1.[c010])) = LTRIM(RTRIM(T2.c002)) THEN IsNull(T1.c010, '') ELSE '' END 'Übertrag von Konto', CONVERT(varchar, IsNull(T1.c004, ''), 104) 'Buchungsdatum', CASE WHEN patindex('%[0-9][0-9][0-9][0-9][0-9]%', T1.c006) > 0 THEN substring(T1.C006, patindex('%[0-9][0-9][0-9][0-9][0-9]%', T1.C006), 5) ELSE '' END 'Übertrag an Konto' FROM T028 T1 INNER JOIN T055 T2 ON T1.mesocomp = T2.mesocomp AND T1.mesoyear = T2.mesoyear AND (LTRIM(RTRIM(T1.C009)) = LTRIM(RTRIM(T2.c002)) OR LTRIM(RTRIM(T1.C010)) = LTRIM(RTRIM(T2.c002))) WHERE T1.mesocomp = '1WEU' AND T2.c004 = 3 AND T2.c002 like 'G%' AND T1.c023 IN ('UG') AND T1.c018 = 0 AND T1.c002 < 0 AND T1.c026 = @MyYear GROUP BY T1.c009, T1.c010, T1.c004, T1.c006, T2.c002 ORDER BY 1 note: quantifier sind leider nicht möglich Der pattern-string wurde jetzt nur auf 5 Ziffern geprüft ciao Micha Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pfefferminzprinz Geschrieben 24. August 2010 Teilen Geschrieben 24. August 2010 hallo, als Ergänzung. Man kann seit MSSQL 2005 eigenen .Net Code als assembly in den MSSQL-Server bzw. die Datenbank einbinden. Dabei kann man auch Reguläre Ausdrücke dem MSSQL-Server beibringen. Man kann Funktionen oder Prozeduren in der Datenbank erstellen die etwas an eine .Net dll übergeben und das Ergebnis wieder per SQL zur Verfügung stellen. Wie das funktioniert kann man unter Regular Expressions in MS SQL Server 2005/2008 - CodeProject nachlesen. Oder wem das nicht ausreicht, mal in die Suchmaschine CLR MSSQL 2005 regex eingeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ArthurDent Geschrieben 26. August 2010 Autor Teilen Geschrieben 26. August 2010 danke für Deinen Tipp und sorry, dass ich erst jetzt antworte. Die Möglichkeit mit .net ist schon eleganter und flexibler, danke nochmals ciao Micha Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.