Wie entkomme ich einem Prozentzeichen in T-SQL?


187

Diese Frage hat auch die Antwort , erwähnt jedoch speziell DB2.

Wie suche ich nach einer Zeichenfolge , LIKEdie bereits ein Prozentzeichen enthält %? Der LIKEBediener verwendet %Symbole, um Platzhalter zu kennzeichnen.

Antworten:


283

Verwenden Sie Klammern. Also nach 75% suchen

WHERE MyCol LIKE '%75[%]%'

Dies ist einfacher als ESCAPE und den meisten RDBMS gemeinsam.


2
Beachten Sie auch, dass Sie in anderen Konstrukten wie Benutzerfunktion, Verkettung usw. nicht einem Prozentzeichen entkommen müssen
Bron Davies,


2
Sie können auch dem unterstrichenen Platzhalterzeichen entkommen : [_]. Wie entkommen Sie dann der offenen eckigen Klammer? So : [[]. sqlserver2000.databases.aspfaq.com/…
Csaba Toth

Die Verwendung der ESCAPE-Klausel ist einfacher zu verstehen als der gehirngeschädigte Zitiermechanismus von MS.
Suncat2000

51

Sie können das ESCAPESchlüsselwort mit verwenden LIKE. Stellen Sie einfach das gewünschte Zeichen (z. B. '!') Vor jedes der vorhandenen %Zeichen in der Zeichenfolge und fügen ESCAPE '!'Sie dann (oder das Zeichen Ihrer Wahl) am Ende der Abfrage hinzu.

Beispielsweise:

SELECT *
FROM prices
WHERE discount LIKE '%80!% off%'
ESCAPE '!'

Dadurch behandelt die Datenbank 80% als tatsächlichen Teil der zu suchenden Zeichenfolge und nicht 80 (Platzhalter).

MSDN Docs für LIKE



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.