Šiandienos programavimo problemos trikdymui pastebėjau, kad negalite naudoti LIKE ieškoti eilučių stulpelių, kuriuose yra specialių simbolių, tokių kaip% arba _, nenaudojant specialaus sintaksės. Problemos išsiaiškinimas užtruko tik keletą minučių, bet vis tiek lengviau prisiminti sintaksę, jei rašote apie tai.
Taigi taip, šis įrašas yra tik mano naudai. Tikimės, kad tai padės ir kažkam kitam.
Tarkime, kad norite rasti bet kuriuos laukus, kuriuose yra tekstas "100%", todėl sukursite šį užklausą:
SELECT * FROM tablename WHERE fieldname LIKE ‘%100%%’
Vietoj to, ko norėjote, gausite visas eilutes, kuriose yra "100", taip pat eilutes, kuriose yra "100%".
Problema yra ta, kad SQL Server naudoja simbolių procentą, pabraukimus ir kvadratines skliaustus kaip specialiuosius ženklus. Jūs tiesiog negalite naudoti juos kaip paprastą simbolį LIKE prašyme, neišskleisdami jų.
Aikštės laikiklis pabėgti
Jūs galite supa% arba _ su kvadratinėliais skliaustuose, kad SQL serveris būtų įsitikinęs, kad vidinis simbolis yra įprastas simbolis.
SELECT * FROM tablename WHERE fieldname LIKE ‘%100[%]%’
T-SQL ESCAPE sintaksė
Arba galite pridėti operatoriaus ESCAPE į savo užklausą ir pridėti character prieš vertę, kurią norite pabėgti.
SELECT * FROM tablename WHERE fieldname LIKE ‘%100\%%’ ESCAPE ‘’
Užklausos dalis ESCAPE '' nurodo SQL varikliui interpretuoti po "" kaip simbolinį simbolį, o ne kaip pakaitos simbolį.
Aš asmeniškai manau, kad antrasis metodas yra lengviau spręsti, ir jūs galite jį naudoti, kad išvengtumėte kvadratinės skliausto.