Jak mogę uniknąć znaku procentowego w T-SQL?

188

To pytanie ma również odpowiedź , ale wymienia konkretnie DB2.

Jak wyszukiwać ciąg za pomocą LIKEtego, który ma już %symbol procentu ? Gdy LIKEużyje operator %symbole oznaczają znaków specjalnych.

Jedidja
źródło

Odpowiedzi:

285

Użyj nawiasów. Więc szukać 75%

WHERE MyCol LIKE '%75[%]%'

Jest to prostsze niż ESCAPE i wspólne dla większości RDBMS.

gbn
źródło
2
również pamiętać, nie trzeba uciekać się symbol procentu w innych konstrukcjach, takich jak funkcja użytkownika, łączenie itd
Bron Davies
2
Można uciec również podkreślenia zbyt wieloznaczny: [_]. Jak zatem uciec od otwartego nawiasu kwadratowego? Tak: [[]. sqlserver2000.databases.aspfaq.com/…
Csaba Toth
Korzystanie z klauzuli ESCAPE jest łatwiejsze do zrozumienia niż mechanizm cytowania uszkodzony przez MS.
Suncat2000
52

Możesz użyć ESCAPEsłowa kluczowego z LIKE. Po prostu wstaw żądany znak (np. „!”) Do każdego z istniejących %znaków w ciągu, a następnie dodaj ESCAPE '!'(lub swój znak) na końcu zapytania.

Na przykład:

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

Spowoduje to, że baza danych będzie traktować 80% jako rzeczywistą część ciągu do wyszukania, a nie 80 (symbol wieloznaczny).

Dokumenty MSDN dla LIKE

Jedidja
źródło
14
WHERE column_name LIKE '%save 50[%] off!%'
Aaron Bertrand
źródło
0

W MySQL ,

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

Kishan Solanki
źródło
Ale pytanie dotyczyło T-SQL.
Peter Mortensen