288: Die PATINDEX-Funktion kann nur für die Datentypen 'char', 'nchar', 'varchar', 'nvarchar'
Fehlermeldung:
Meldung 288, Ebene 16, Status 1, Zeile 3
Die PATINDEX-Funktion kann nur für die Datentypen 'char', 'nchar', 'varchar', 'nvarchar', 'text' und 'ntext' verwendet werden.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung erscheint, wenn man versucht, die Zeichenfolgenfunktion PATINDEX auf Werte von Nicht-Zeichenfolgen Datentypen anzuwenden.
Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.
Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. PATINDEX kann nur auf Zeichenfolgen angewendet werden. Gegebenenfalls muß der Wert vorher per CAST() oder CONVERT() in eine Zeichenfolge umgewandelt werden.
Versionen:
Alle Versionen von SQL Server.
Beispiele:
DECLARE @i INT
SET @i = 12345
SELECT PATINDEX('%3%', @i)
Anmerkungen:
Im obigen Beispiel wird versucht, das erste Auftreten der Zeichenfolge '3' in einem Wert vom Typ Integer zu finden. Da dies mittels PATINDEX nicht zulässig ist, wird der Fehler ausgelöst. Um aus dem Beispiel das gewünschte Ergebnis zu erzielen, kann man @i vorher von Integer in einen Zeichenfolgendatentypen umwandeln:
DECLARE @i INT
SET @i = 12345
SELECT PATINDEX('%3%', CAST(@i AS VARCHAR(10)))
Unter Umständen könnte man auch CHARINDEX einsetzen. CHARINDEX führt eine implizite Konvertierung durch, hat aber einen anderen Anwendungsbereich. PATINDEX unterstützt die Suche nach Mustern, CHARINDEX nicht.