androxin
Goto Top

Reguläre Ausdrücke in MSSQL dynamisch zusammensetzen

Hallo,

ich habe eine Tabelle mit einer Spalte, deren Inhalt ich mit regulären Ausdrücken einschränken möchte.

Momentan geht es ganz rudimentär über

SELECT
   a, b
FROM
  abc
WHERE
   a LIKE '[a-z09][abc]'  
OR a LIKE '[a-z4][def]'  


Nun möchte ich diesen Filter weiter ausbauen, so dass alle zutreffenden regulären Ausdrücke in einer separaten Tabelle gepflegt werden können:

tabelle_filterbedingungen:

ID | FILTER  | AUSDRUCK
----------------------
 1 | TAB_ABC | [a-z09][abc]
 2 | TAB_ABC | [a-z4][def]
 3 | TAB_XY  | [a-z7][ghi]

Wie muss nun das SQL Statement lauten, um alle in der Tabelle "tabelle_filterbedingungen" enthaltenen Ausdrücke mit einem "TAB_ABC" in der "FILTER"-Spalte in dem Select auf "abc" anzuwenden?

Vielen Dank schon einmal für die Anregungen.

Content-ID: 336673

Url: https://administrator.de/forum/regulaere-ausdruecke-in-mssql-dynamisch-zusammensetzen-336673.html

Ausgedruckt am: 22.12.2024 um 08:12 Uhr

Friemler
Friemler 02.05.2017 um 16:00:35 Uhr
Goto Top
Hallo Androxin,

teste mal folgendes:
WITH Filters(aFilter) As
(
  SELECT Ausdruck
  FROM   tabelle_filterbedingungen
  WHERE  Filter = 'TAB_ABC'  
)

SELECT DISTINCT
   T.a
  ,T.b

FROM
  abc AS T
  INNER JOIN Filters AS F
    ON T.a LIKE F.aFilter

Grüße
Friemler
ukulele-7
ukulele-7 03.05.2017 um 07:56:19 Uhr
Goto Top
Die Idee von Friemler ist gut, das solltest du probieren.

Ansonsten wäre der gänige Weg über dynamisches SQL.