Keressen sorokat az SQL Serverben különleges karakterekkel
A programozási probléma elhárításakor ma észrevettem, hogy speciális szintaxis használata nélkül nem használhat LIKE keresést olyan karakterlánc oszlopokhoz, amelyek speciális karaktereket tartalmaznak, mint például a% vagy _. A probléma kiszámítása csak néhány percet vett igénybe, de a szintaxis emlékezése mindig könnyebb, ha róla ír.
Tehát igen, ez a hozzászólás kizárólag az én javamra szolgál. Remélhetőleg segíteni fog valakinek is.
Tegyük fel, hogy olyan mezőket szeretnénk találni, amelyek tartalmazzák a „100%” szöveget, így összeállítod ezt a lekérdezést:
SELECT * FROM tablename WHERE mezőnév LIKE '% 100 %%'
Ahelyett, hogy mit szeretne, megkapja a „100” -ot tartalmazó sorokat, valamint a „100%” -ot tartalmazó sorokat..
A probléma az, hogy az SQL Server a százalékjelet, aláhúzást és szögletes zárójeleket speciális karakterként használja. Egyszerűen nem használhatja őket egyszerű karakterként egy LIKE lekérdezésben, anélkül, hogy elmenekülne tőlük.
Szögletes zárójel menekülés
A% -ot vagy a _-et szögletes zárójelekkel körbevehetjük, hogy az SQL Server azt mondja, hogy a belső karakter rendszeres karakter.
SELECT * FROM tablename WHERE mezőnév LIKE '% 100 [%]%'
T-SQL ESCAPE szintaxis
Alternatívaként az ESCAPE operátort hozzáadhatja a lekérdezéshez, és hozzáadhat egy.
SELECT * FROM tablename WHERE mezőnév LIKE '% 100 %%' ESCAPE '
A lekérdezés ESCAPE része azt mondja az SQL-motornak, hogy a karaktert a szó szerinti karakter \ t.
Személy szerint könnyebben kezelhetem a második módszert, és használhatod a szögletes zárójelből is.