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.

Jedidja
quelle

Antworten:

283

Verwenden Sie Klammern. Also nach 75% suchen

WHERE MyCol LIKE '%75[%]%'

Dies ist einfacher als ESCAPE und den meisten RDBMS gemeinsam.

gbn
quelle
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

Jedidja
quelle
14
WHERE column_name LIKE '%save 50[%] off!%'
Aaron Bertrand
quelle
0

In MySQL ,

WHERE column_name LIKE '%|%%' ESCAPE '|'

Kishan Solanki
quelle
Aber die Frage war über T-SQL.
Peter Mortensen