„SQL Server“ ieškokite eilučių su ypatingais simboliais
Trikčių diagnostikos problema šiandien pastebėjau, kad negalite naudoti LIKE paieškos styginių stulpeliuose, kuriuose yra specialių simbolių, pvz.,% Arba _, nenaudojant specialios sintaksės. Išsiaiškinę problemą užtruko vos kelios minutės, bet prisimindami sintaksę visada lengviau rašyti apie tai.
Taigi, taip, šis pranešimas skirtas tik mano naudai. Tikimės, kad tai padės kitiems.
Tarkime, kad norite rasti bet kuriuos laukus, kuriuose yra tekstas „100%“, todėl sudedate šį užklausą:
SELECT * FROM tablename WHERE lauko pavadinimas LIKE '% 100 %%'
Vietoj to, ko norėjote, gausite visas eilutes, kuriose yra „100“, ir eilutes, kuriose yra „100%“.
Problema yra ta, kad SQL Server naudoja procentinį ženklą, pabraukimą ir kvadratinius skliaustus kaip specialius simbolius. Jūs tiesiog negalite jų naudoti kaip paprasto simbolio LIKE užklausoje neišeinant iš jų.
Kvadratinių skliaustų pabėgimas
% Arba _ galite apsupti kvadratiniais skliaustais, kad SQL Server informuotų, jog viduje esantis simbolis yra įprastas simbolis.
SELECT * FROM tablename WHERE lauko pavadinimas LIKE '% 100 [%]%'
T-SQL ESCAPE sintaksė
Arba galite pridėti ESCAPE operatorių į užklausą ir pridėti simbolį prieš norimą pabėgti.
SELECT * FROM tablename WHERE lauko pavadinimas LIKE '% 100 %%' ESCAPE '\ t
„ESCAPE“ užklausos dalis nurodo SQL varikliui aiškinti simbolį po pažodinio simbolio, o ne.
Asmeniškai manau, kad antrasis metodas yra lengviau sprendžiamas, ir jūs galite jį naudoti taip, kad išvengtumėte ir kvadratinių skliaustų.