Dienstag, 22. Mai 2012

Search For Rijen met speciale tekens in SQL Server

Terwijl het oplossen van een probleem programmering vandaag heb ik gemerkt dat je niet kunt een LIKE zoeken naar reeks kolommen met speciale tekens zoals% of _ te gebruiken zonder gebruik te maken van een speciale syntax. Uitzoeken van het probleem duurde slechts een paar minuten, maar herinneren syntax is altijd gemakkelijker als je erover schrijven.

Dus ja, dit bericht is uitsluitend voor mijn uitkering. Hopelijk zal het helpen iemand anders ook.

Laten we zeggen dat je wilt de velden die de tekst "100%" bevatten, te vinden, zodat je samen deze query:

SELECT * FROM tabelnaam WHERE veldnaam LIKE '% 100%%'

In plaats van wat je wilde, krijg je alle rijen die "100''evenals de rijen die bevatten" 100% "bevatten.

Het probleem hier is dat SQL Server het procent teken, underscore, en tussen vierkante haken als speciale tekens. Je kan gewoon niet gebruiken als een gewoon personage in een LIKE query's, zonder deze uit te sluiten.

Vierkante haak Escape

U kunt de surround% of _ met vierkante haken om SQL Server te vertellen dat het karakter binnenkant is een regelmatig karakter.

SELECT * FROM tabelnaam WHERE veldnaam LIKE '% 100 [%]%'

T-SQL ESCAPE Syntax

U kunt ook de ESCAPE operator toevoegen op uw vraag, en voeg een teken vóór de waarde die u wilt ontsnappen.

SELECT * FROM tabelnaam WHERE veldnaam LIKE '% 100 %%' ESCAPE ''

De ESCAPE '' een deel van de query vertelt de SQL-engine om het karakter te interpreteren na de als een letterlijk teken in plaats van als een wildcard.

Persoonlijk vind ik de tweede methode gemakkelijker om te gaan met, en je kunt het gebruiken om een ​​vierkante haken te ontsnappen ook.

Keine Kommentare:

Kommentar veröffentlichen