Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

regexpr in SELECT statement

Empfohlene Antworten

Veröffentlicht

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

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

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.