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.