Zoeken naar rijen met speciale tekens in SQL Server
Bij het oplossen van een programmeerprobleem heb ik gemerkt dat u een LIKE-zoekopdracht voor kolomkolommen met speciale tekens zoals% of _ niet kunt gebruiken zonder een speciale syntaxis te gebruiken. Het uitproberen van het probleem duurde slechts een paar minuten, maar het onthouden van syntaxis is altijd gemakkelijker als je erover schrijft.
Dus ja, deze post is uitsluitend in mijn voordeel. Hopelijk helpt het ook iemand anders.
Stel dat u velden wilt zoeken die de tekst "100%" bevatten, dus u stelt deze query samen:
SELECT * FROM tablename WHERE fieldname LIKE '% 100 %%'
In plaats van wat je wilde, krijg je alle rijen met "100" en de rijen met "100%".
Het probleem hier is dat SQL Server het procentteken, onderstrepingsteken en vierkante haken gebruikt als speciale tekens. Je kunt ze gewoon niet gebruiken als een eenvoudig karakter in een LIKE-zoekopdracht zonder eraan te ontsnappen.
Square Bracket Escape
Je kunt de% of _ omsluiten met vierkante haakjes om aan SQL Server te laten weten dat het personage in kwestie een normaal teken is.
SELECT * FROM tablename WHERE fieldname LIKE '% 100 [%]%'
Syntaxis van T-SQL ESCAPE
U kunt ook de ESCAPE-operator toevoegen aan uw zoekopdracht en een \ -teken toevoegen vóór de waarde die u wilt laten ontsnappen.
SELECT * FROM tablename WHERE fieldname LIKE '% 100 \ %%' ESCAPE '\'
Het ESCAPE '\' deel van de query vertelt de SQL-engine om het teken na de \ te interpreteren als een letterlijk teken in plaats van als een jokerteken.
Persoonlijk vind ik de tweede methode gemakkelijker om mee om te gaan, en je kunt het ook gebruiken om aan een vierkante haak te ontsnappen.