Search For Rows With Special Characters in SQL Server Sök för rader med specialtecken i SQL Server
While troubleshooting a programming problem today I noticed that you can't use a LIKE search for string columns containing special characters like % or _ without using a special syntax. Även felsökning ett programspråk problem i dag märkte jag att du inte kan använda en LIKE sökning efter sträng kolumner som innehåller specialtecken som% eller _ utan att använda en speciell syntax. Figuring out the problem took only a few minutes, but remembering syntax is always easier if you write about it. Räkna ut problemet tog bara några minuter, men kom ihåg syntaxen är alltid lättare om du skriver om det.
So yes, this post is solely for my benefit. Så ja, det här inlägget är enbart för min fördel. Hopefully it will help somebody else too. Förhoppningsvis kommer det att hjälpa någon annan också.
Let's say you want to find any fields that contain the text “100%”, so you put together this query: Låt oss säga att du vill hitta de fält som innehåller texten "100%", så att du satt ihop den här frågan:
SELECT * FROM tablename WHERE fieldname LIKE '%100%%' SELECT * FROM tabellnamn WHERE fältnamn LIKE '% 100%%'
Instead of what you wanted, you'll get all the rows that contain “100″ as well as the rows that contain “100%”. I stället för vad du ville, får du alla de rader som innehåller "100" samt de rader som innehåller "100%".
The problem here is that SQL Server uses the percent sign, underscore, and square brackets as special characters. Problemet här är att SQL Server använder procenttecken, understreck och hakparenteser som specialtecken. You simply can't use them as a plain character in a LIKE query without escaping them. Du kan helt enkelt inte använda dem som ett vanligt tecken på samma fråga utan att låta dem.
Square Bracket Escape Hakparentesen Escape
You can surround the % or _ with square brackets to tell SQL Server that the character inside is a regular character. Du kan omge% eller _ med hakparenteser berätta SQL Server att karaktären inuti är en återkommande karaktär.
SELECT * FROM tablename WHERE fieldname LIKE '%100[%]%' SELECT * FROM tabellnamn WHERE fältnamn LIKE '% 100 [%]%'
T-SQL ESCAPE Syntax T-SQL ESCAPE Syntax
Alternatively, you can append the ESCAPE operator onto your query, and add a \ character before the value you want to escape. Alternativt kan du bifoga ESCAPE aktören på din fråga, och lägga till ett \ tecken innan det värde du vill fly.
SELECT * FROM tablename WHERE fieldname LIKE '%100\%%' ESCAPE '\' SELECT * FROM tabellnamn WHERE fältnamn LIKE '% 100 \%%' ESCAPE '\'
The ESCAPE '\' part of the query tells the SQL engine to interpret the character after the \ as a literal character instead of as a wildcard. Den fly "\" en del av frågan berättar SQL motorn att tolka tecknet efter \ som en bokstavlig karaktär i stället för som ett wildcard.
Personally I find the second method easier to deal with, and you can use it to escape a square bracket as well. Personligen tycker jag den andra metoden lättare att handskas med, och du kan använda det för att undgå en hakparentesen också.

Daily Email Updates Dagligt Updates
You can get our how-to articles in your inbox each day for free. Du kan få våra instruktioner artiklar i din inkorg varje dag gratis. Just enter your name and email below: Skriv bara in ditt namn och e-postadress nedan:



thanks for the GREAT post! Tack för bra post! Very useful… Mycket användbart ...
This write up was extremely beneficial for me . Detta skriva upp var mycket fördelaktigt för mig. Thanks for writing it. Thanks for writing it. Keep it up. Keep it up.