Tänu programmeerimisprobleemi tõrkeotsingule märkasin, et te ei saa kasutada spetsiaalsete sümbolite (nt% või _) korral stringide veerud, mis sisaldavad erilist süntaksit. Probleemi väljaselgitamine võttis vaid paar minutit, kuid süntaksi mäletamine on alati lihtsam, kui kirjutad selle kohta.
Nii et jah, see postitus on ainult minu kasuks. Loodetavasti aitab see ka kellelgi teisel.
Oletame, et soovite leida välju, mis sisaldavad teksti "100%", nii et saate selle päringu kokku panna:
SELECT * FROM tablename WHERE fieldname LIKE ‘%100%%’
Selle asemel, mida sa soovisid, saad kõik read, mis sisaldavad "100", ja read, mis sisaldavad "100%".
Probleemiks on see, et SQL Server kasutab erimärke tähise protsent, alakriips ja nurksulgudes. Sa lihtsalt ei saa neid kasutada LIKE päringu tavalise tähemärgina, ilma et neid oleks võimalik põgeneda.
Square Bracket Escape
% Või _ nurksulgudes saab ümbritseda SQL Serverile öelda, et sees olev märgis on tavaline märk.
SELECT * FROM tablename WHERE fieldname LIKE ‘%100[%]%’
T-SQL ESCAPE süntaks
Teise võimalusena võite ESCAPE-operaatori lisada oma päringusse ja lisada väärtuseks character, mille soovite põgeneda.
SELECT * FROM tablename WHERE fieldname LIKE ‘%100\%%’ ESCAPE ‘’
Päringu osa ESCAPE '' ütleb, et SQL mootor tõlgendab märgi pärast kui sõna-sõnalist märki, mitte metamärki.
Isiklikult leian, et teine meetod on lihtsam lahendada, ja võite seda ka nurksulgudes põgeneda.