SQL Server, die Kombination von % und [] wildcards in der LIKE-Anweisung
In t-sql gibt es eine Möglichkeit, das zu tun pattern-matching in einer like-Anweisung, so dass Sie Suche für 1 oder mehrere Zeichen in einem gegebenen Satz?
Genau zu sein, bin ich versucht zu kommen mit einem LIKE statement, das die Rückgabe von strings, die beginnen mit 1 oder mehreren Buchstaben und am Ende in 1 oder mehr zahlen.
Also diese Zeichenfolgen entsprechen sollte:
- abcd1234
- a1
- abcdef2
- ab123456
Und diese sollten strings nicht übereinstimmen:
- abcd
- 1234
- abcd1234abcd
- 1abcd1
Ich weiß, können Sie den Platzhalter % mit einer Zeichenfolge von 0 oder mehr Zeichen, und Sie können Sie verwenden eckige Klammern[] mit einem einzelnen Zeichen in einem bestimmten Satz. Aber gibt es eine Möglichkeit, zu kombinieren, so dass ich passen auf 1 oder mehr Zeichen in einem gegebenen Satz?
Sowas wäre nett, aber natürlich nicht funktioniert:
WHERE ColumnName LIKE '[%a-z][%0-9]'
Kennt jemand eine Lösung zu diesem problem? Oder ist es einfach nicht möglich, in SQL-Server?
Dank,
Jim
Nein, dass wird nicht funktionieren, weil ich möchte, dass alle alpha-Zeichen, gefolgt von nur numerische Zeichen. Martin Smith der Kommentar ist tatsächlich nicht das, was ich Suche.
InformationsquelleAutor Jim | 2014-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie pattern-matching ist sehr begrenzt, die es nicht erlauben für den normalen regulären Ausdrücken.
Sehen hier für details.
Für Ihre Bedürfnisse nutzen:
Diese passen zu jedem Buchstaben, gefolgt von irgendetwas, gefolgt von einer Zahl. SQL erzwingt, dass die Buchstaben und eine Zahl werden an den beiden enden der saite, da gibt es kein Muster oder literal-Zeichen vor oder nach unserer
[]
Spiel setzen.ColumnName LIKE '[a-z]%[0-9]' - UND Spaltenname not LIKE '%[0-9][a-z]%'?
Ja @Martin, das ist eigentlich das, was ich suchte und dann nicht zu kommen mit. Ich glaube, ich brauchte 2 separate Anweisungen, um es zu erreichen. Danke.
Wenn ich glaube, Sie wirklich brauchen eine Dritte auszuschließen strings mit Zeichen, die weder alpha noch numerische
AND ColumnName NOT LIKE '%[^0-9A-Z]%'
Ja @Martin, du hast Recht mit, dass als gut, und ich plan auf dem tun, dass
InformationsquelleAutor Jeffrey Wieder
Wenn Sie möchten, verwenden Sie die Regex-und die Berechtigungen haben, schreiben Sie eine benutzerdefinierte Funktion zu geben, sich Zugang zu den Regulären Ausdrücken parser auf dem SQL-server .NET CLR:
http://msdn.microsoft.com/en-us/magazine/cc163473.aspx (SQL 2005 und höher)
InformationsquelleAutor Charles D.