Regular expressions

M3628

Neuer Benutzer
Beiträge
3
Hallo zusammen,

aktuell befasse ich mich mit dem Thema "Regular Expressions" in MSSQL-Datenbanken.
(Ich benutze SQL Server Management Studio 15.0.18410.0)

Folgender Code gibt die Einträge aat, bat, cat zurück, was korrekt ist.

DECLARE @SearchPattern NVARCHAR(MAX);
SET @SearchPattern = (SELECT '[a-c]at');

SELECT * FROM
(
SELECT 'aat' AS Expression
UNION
SELECT 'bat' AS Expression
UNION
SELECT 'cat' AS Expression
UNION
SELECT 'dat' AS Expression
UNION
SELECT 'eat' AS Expression
) AS A
WHERE (PATINDEX(@SearchPattern, A.Expression) > 0)
GO


Wie kann ich das SearchPattern anpassen, so dass die Einträge "aat" ODER "dat" ODER "eat" zurückgegeben werden?
OR Definition von zeichenfolgen?

SET @SearchPattern = (SELECT 'aat|dat|eat'); funktioniert nicht!

Oder gibt es bessere Lösungen als mit PATINDEX zu arbeiten?
 
Werbung:
kenne M$SQL nicht, hier würde es so gehen:

Code:
postgres=# create table m3628(t text);
CREATE TABLE
postgres=# copy m3628 from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> aat
>> bat
>> cat
>> dat
>> eat
>> fat
>> gat
>> \.
COPY 7
postgres=# select * from m3628 where t ~ '[a,d,e]at';
  t  
-----
 aat
 dat
 eat
(3 rows)

postgres=#

Regex also '[a,d,e]at', wenn mssql REGEX kann, sollte Dir das helfen.
 
Hmm, Danke, aber es ist nicht das, was ich wollte.
Gibt es keine Möglichkeit über MSSQL Regex zu sagen ich will "aat" ODER "dat" ODER "eat" zurückbekommen?
(Ganze Strings OR-Verknüpft)
 
akretschmer hat mir gezeigt, wie man ein "oder" auf einzelne Buchstaben macht. Das funktioniert.

Wie macht man aber ein "oder" auf komplette Strings in der MSSQL Datenbank mit PATINDEX oder anderen (besseren?) Funktionen?

Danke schon mal für jegliche Tipps...
 
Werbung:
SQL Server unterstützt schlichtweg keine regulären Ausdrücke.

Es werden die normalen SQL Wildcards _ und % unterstützt und darüber hinaus "Bereiche" wie z.B. [a-z] - das war's aber schon. Andere Features regulärer Ausdrücke werden nicht unterstützt

Wenn Du "echte" reguläre Ausdrücke verwenden willst, musst Du eine Funktion in C# schreiben, die das macht (such mal danach im Internet, da gibt's einige Beispiele)

Wenn Du ein "oder" brauchst, musst Du mehrere Bedingungen mit OR verknüpfen
 
Zurück
Oben