Jak uciec od znaku podkreślenia?
Piszę coś takiego jak klauzula where i chcę być w stanie znaleźć rzeczywiste wpisy z _d na końcu.
Where Username Like '%_d'
sql-server
GateKiller
źródło
źródło
Oczywiście rozwiązanie @Lasse jest słuszne, ale istnieje inny sposób rozwiązania problemu: operator T-SQL
LIKE
definiuje opcjonalną klauzulę ESCAPE , która pozwala zadeklarować znak, który ucieknie od następnego znaku do wzorca.W twoim przypadku następujące klauzule WHERE są równoważne:
źródło
ESCAPE
klauzula jest częścią standardu SQL i będzie działać na dowolnym DBMS, nie tylko SQL Server.Te rozwiązania są całkowicie sensowne. Niestety, żadne nie działało dla mnie zgodnie z oczekiwaniami. Zamiast próbować sobie z tym poradzić, zacząłem pracować:
źródło
To działało dla mnie, po prostu skorzystaj z ucieczki
'%\_%'
źródło
Żadne z nich nie działało dla mnie w SSIS v18.0, więc chciałbym zrobić coś takiego:…
WHERE CHARINDEX('_', thingyoursearching) < 1
gdzie staram się ignorować ciągi znaków z podkreśleniem. Jeśli chcesz znaleźć rzeczy, które mają podkreślenie, po prostu odwróć:
WHERE CHARINDEX('_', thingyoursearching) > 0
źródło