A programozási probléma hibaelhárítása során ma észrevettem, hogy nem használhatsz olyan LIKE karakterláncokat, amelyek speciális karaktereket tartalmaznak, például% vagy _, speciális szintaxis használata nélkül. A probléma feltárása csak néhány percet vett igénybe, de a szintaxis megemlítése mindig könnyebb, ha írsz róla.
Tehát igen, ez a hozzászólás kizárólag az én hasznom. Remélhetőleg ez segít valaki másnak is.
Tegyük fel, hogy olyan mezőket szeretne megtalálni, amelyek tartalmazzák a "100%" szöveget, így összeállíthatja ezt a lekérdezést:
SELECT * FROM tablename WHERE fieldname LIKE ‘%100%%’
Ahelyett, hogy mit szeretne, kap minden olyan sorokat, amelyek "100" -t tartalmaznak, valamint a "100%" értékű sorokat.
A probléma az, hogy az SQL Server a százalékos jelet, az aláhúzást és a szögletes zárójeleket speciális karakterekként használja. Egy LIKE lekérdezésben egyszerűen nem használhatja őket egyszerű karakterként anélkül, hogy elkerülné őket.
Négyzetes konzolos menekülés
A% vagy _ szögletes zárójelekkel körülvesíthatja az SQL Server-t, hogy a benne lévő karakter egy szabályos karakter.
SELECT * FROM tablename WHERE fieldname LIKE ‘%100[%]%’
T-SQL ESCAPE szintaxis
Alternatív megoldásként hozzáadhatja az ESCAPE operátort a lekérdezéshez, és hozzáadhatja a karaktert az elhagyni kívánt érték előtt.
SELECT * FROM tablename WHERE fieldname LIKE ‘%100\%%’ ESCAPE ‘’
A lekérdezés ESCAPE '' része azt mondja az SQL motornak, hogy értelmezze a karaktert a karakter helyett karakter helyett helyettesítő karakter helyett.
Személy szerint a második módszert könnyebben kezelhetem, és használhatod a szögletes zárójelet is.