Zum Inhalt springen

regexpr in SELECT statement


ArthurDent

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...